我正在开发一个包含多个 MVC 项目的项目。我想使用 StructureMap,但我不确定如何(或者是否可能)定义一个 IOC 容器,该容器可以被两个 global.asax 文件(每个项目一个)重用。我不想为每个定义两个 IoC 容器。这可以通过其他方式完成吗?
问问题
320 次
2 回答
2
假设您的问题是相同的配置,您可以将您的注册放在一个公共注册表中:
public class CommonRegistry : Registry
{
public CommonRegistry()
{
// configuration here
}
}
然后在每个应用程序中初始化它:
ObjectFactory.Initialize(x =>
{
x.AddRegistry<CommonRegistry>();
});
于 2012-07-18T19:01:49.717 回答
1
(或者如果可能的话)
不,那是不可能的。DI 容器将对象存储在内存中。内存是每个 AppDomain 的。AppDomain 是每个应用程序。应用程序是每个 Global.asax。所以 2 Global.asax => 2 ASP.NET 应用程序 => 2 AppDomains => 2 个不同且不相关的内存区域。您当然可以将 DI 容器配置放在一个类库中,供两个 ASP.NET 应用程序重用。
于 2012-07-18T17:48:21.997 回答