在一个ASP.net应用程序中使用多个di框架



是否有人知道,如果它可能有多个di框架(例如Unity和Ninject)在同一个应用程序。或者框架是否会相互"碰撞"?

一切皆有可能。但是否有意义是另一回事。

您可以使用DI框架1创建一部分对象图,然后使用DI框架2创建另一部分对象图,然后您可以手动连接两个对象图。

请注意,您可能不应该在类库(您的框架)中使用DI框架。DI框架(或DI容器)应该只在应用程序内部(在Composition根目录中)使用。

引用参考文章(Composition Root):

只有应用程序应该有组合根。库和框架不应该。

所以,如果你只是在构建某种框架(比如数据访问或电子邮件消息处理),那么你不应该使用任何DI容器(DI和DI容器是不同的东西)。在你的框架中,你应该启用DI,通过在构造函数中声明类的依赖,并确保这些依赖是抽象的(例如声明为接口)。

你的框架的消费者将决定使用哪个DI容器(或者甚至他们想要首先使用DI容器)。

在我看来,不使用DI容器更好(即使在应用程序中)。

最新更新