加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET Core中的依赖注入(vNext)

发布时间:2020-12-15 18:47:47 所属栏目:asp.Net 来源:网络整理
导读:目前还没有关于DI主题的文档 – Dependency Injection.有人可以帮助我了解以下内容: 这些注册有什么区别? public void ConfigureServices(IServiceCollection services){ services.AddTransientIService,Service(); services.AddScopedIService,Service();
目前还没有关于DI主题的文档 – Dependency Injection.有人可以帮助我了解以下内容:

>这些注册有什么区别?

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IService,Service>();
    services.AddScoped<IService,Service>();
    services.AddSingleton<IService,Service>();
    services.AddInstance(service);
}

>使用内置DI的现有解决方案(NInject,Autofac,Structure Map)有什么优缺点?
>默认依赖注入的当前限制是什么(如果有)?

解决方法

对于遵循SOLID原则的任何相当大尺寸应用的产品开发,vNext的内置DI容器将无用,因为:

>它不能帮助您验证您的配置,使其非常难以诊断来自常见配置错误的问题,例如Captive Dependencies.在合理大小的应用程序中,实际上很难自己发现这些错误。
>使用拦截器或decorators应用交叉问题是不可能的。这使得维护任何合理大小的应用程序真的很贵。
>尽管它支持将打开的通用抽象映射到打开的通用实现,但它无法使用类型约束的泛型类型。

内置容器还有其他限制,例如只能支持具有单个构造函数的类型,但这是一个非常合理的默认值,因为your injectables should only have a single constructor anyway.由于rc1现在有一些多操作符支持。

如果您从一个新的和简单的项目开始,我的建议是应用Pure DI(这意味着手机组件,而不使用容器),并通过插入your custom IControllerActivator来解决您的类型。之后,当批处理注册和装饰将提高composition root的可维护性,切换到符合您要求的已建立的DI库之一。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读