容器注册的最佳做法?

时间:2010-11-11 16:07:53

标签: .net ioc-container containers autofac

在容器中注册类似乎有两种选择 - 显式(RegisterType()。As)或自动连接(RegisterAssemblyTypes())。两者似乎都有相当大的缺点。

明确注册意味着我得到了一个知道模块中每个类型的神类,并且很快变得庞大而笨拙。

通过自动布线注册可能会错误配置依赖关系,例如接口的多个实现(最后一次注册获胜)或注册太多您永远无法解决的类型,或者必须明确覆盖注册例如终生关注(某些类型是单身,有些则不是)。

是否有一种最佳做法可以降低注册的痛苦/风险?

干杯 马特

2 个答案:

答案 0 :(得分:1)

也许中间地点是为应该注册的类添加属性。该属性可以使用参数来指定它的注册方式,例如组件的生命周期。

这并不难实现。如果你这样做,你仍然有一个主注册函数,但它只需要知道要查找的属性(以及要查看的DLL)而不是每个组件。

答案 1 :(得分:1)

您是否考虑过使用Autofac的模块化支持?

在您的引导程序或您构建容器的任何位置,只需在应用程序中注册模块,然后在每个模块中注册您的类型。这使得阅读和理解变得更加容易。