0

我正在开发一个包含多个 MVC 项目的项目。我想使用 StructureMap,但我不确定如何(或者是否可能)定义一个 IOC 容器,该容器可以被两个 global.asax 文件(每个项目一个)重用。我不想为每个定义两个 IoC 容器。这可以通过其他方式完成吗?

4

2 回答 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 回答