在容器中注册类似乎有两种选择 - 显式(RegisterType()。As)或自动连接(RegisterAssemblyTypes())。两者似乎都有相当大的缺点。
明确注册意味着我得到了一个知道模块中每个类型的神类,并且很快变得庞大而笨拙。
通过自动布线注册可能会错误配置依赖关系,例如接口的多个实现(最后一次注册获胜)或注册太多您永远无法解决的类型,或者必须明确覆盖注册例如终生关注(某些类型是单身,有些则不是)。
是否有一种最佳做法可以降低注册的痛苦/风险?
干杯 马特
答案 0 :(得分:1)
也许中间地点是为应该注册的类添加属性。该属性可以使用参数来指定它的注册方式,例如组件的生命周期。
这并不难实现。如果你这样做,你仍然有一个主注册函数,但它只需要知道要查找的属性(以及要查看的DLL)而不是每个组件。
答案 1 :(得分:1)
您是否考虑过使用Autofac的模块化支持?
在您的引导程序或您构建容器的任何位置,只需在应用程序中注册模块,然后在每个模块中注册您的类型。这使得阅读和理解变得更加容易。