3

私はMVC(4)アプリケーションを持っており、アセンブリAIではこれをglobal.asax(Application_Start())に持っています:

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 に答える