3

我有一个 MVC (4) 应用程序,并且在我的 global.asax 中(在 Application_Start() 中)中,AI 有这个:

ObjectFactory.Configure(x =>
{
    x.For<IPerson>().Use<Person>();
    x.For<IObjectCreator>().Use<StructureMapObjectCreator>();
    x.For<IPersonRepository>().Use<PersonRepository>();
});

这在程序集 A 中有效。

现在,我有程序集 B。程序集 B 也是一个 Web 应用程序,并且具有对程序集 A 的引用。程序集 A 中定义的绑定必须可以从程序集 B 访问。所以,当我在程序集 BI 中使用 IPerson 时,我想使用来自大会 A。

我在程序集 B 中尝试了几件事,但我无法弄清楚。这是我最后一次尝试:

程序集 B 中的 Global.asax(在 Application_Start() 中):

var mainAssembly = Assembly.GetAssembly(typeof(IObjectCreator));

ObjectFactory.Configure(x => 
{
    x.For<IProduct>().Use<Product>();
    x.Scan(assembly =>
    {
        assembly.Assembly(mainAssembly);
    });
});

我必须做什么才能在程序集 B 中使用程序集 A 的绑定?

4

1 回答 1

2

您可以在程序集 A 中创建一个注册表,其中包含您在程序集 A 中所需的所有映射。然后您可以将该注册表注册到 Global.asax 中的程序集 A 和其 Global.asax 中的程序集 B。StructureMap 注册表 DSL

然后,在程序集 B 中,您可以像这样注册您的注册表:

var container = new Container(x =>
        {
            x.AddRegistry<AssemblyARegistry>();
        });
于 2012-12-21T09:35:41.203 回答