我想在我的类库中添加DI功能,这个类库是MVC4 Web应用程序的一部分。所以我有Unity、StructureMap和Ninject三个选择。
我选择了Unity,因为它在Asp.Net示例中被提到过。
当我在Nuget中搜索Unity时,我发现有多个版本的Unity。哪一个适合我的类库,Unity还是Unity.MVC4?
我想在我的类库中添加DI功能,这个类库是MVC4 Web应用程序的一部分。所以我有Unity、StructureMap和Ninject三个选择。
我选择了Unity,因为它在Asp.Net示例中被提到过。
当我在Nuget中搜索Unity时,我发现有多个版本的Unity。哪一个适合我的类库,Unity还是Unity.MVC4?
您需要添加Unity.MVC4包,它提供了Unity和ASP.NET MVC4之间的集成。但是,Unity.MVC4依赖于Unity,因此通过添加它,您将获得这两个包。
您还需要类似以下内容来配置集成:
var container = new UnityContainer();
// configure container here (RegisterType, etc.), then make sure MVC 4 uses Unity...
DependencyResolver.SetResolver(new Unity.Mvc4.UnityDependencyResolver(container));
您应该使用NuGet安装ASP.NET MVC的Unity BootStrapper。它由Microsoft创建并使用最新的Unity 3.0。在Microsoft Unity开发人员指南第45页中也提到了它。
我今天尝试了Unity.MVC4。当前的1.2版本仍使用Unity 2。也许下一个版本将使用新的Unity 3.0。我猜两者都可以接受。
有没有一种方法可以在unity.mvc4中使用xml配置而不是使用
container.RegisterType<itestservice, testservice="">();
编写类似 LoadConfiguration() 的代码,将配置添加到 web.config 中?
谢谢