【发布时间】:2018-02-17 02:01:04
【问题描述】:
我刚刚使用 .net core (1.1) 开始一个新项目,并希望在 DI 容器中注册子程序集中的服务。在以前的项目中,我在具体类所在的程序集中注册了服务,这允许我拥有一个公共接口但一个私有(或内部)实现。
如果不自己编写某种程序集发现功能,我看不到在 .net 核心中实现此功能的方法(我知道并不难)。
AutoFac 使用 Modules,Ninject 使用 NinjectModule,LightInject 使用 ICompositionRoot,.net core 中是否有等价物(不替代 DI 框架)。
【问题讨论】:
-
您想通过内部实现实现什么目标?
-
没有必要让具体的实现暴露在程序集之外。
-
也不需要隐藏。
-
是的。我不希望经验不足的开发人员尝试访问他们不应该直接访问的类。潜在地,同一接口的多个实现只能从 DI 中实例化,如果实现是公共的,很容易选择错误的。
标签: c# dependency-injection .net-core