0

多数のアセンブリがあり、それぞれが Autofac.Module を拡張するクラスを使用して Autofac に依存関係を提供しています。これらのそれぞれを MEF エクスポートとして装飾しました。

[Export(typeof(IModule))]
public class ContainerModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        base.Load(builder);
    }
}

クライアント アプリケーションの起動の一環として、これらのモジュールをすべて集めます。次に例を示します。

var builder = new ContainerBuilder();
var path = "Path to application Bin directory";
var catalog = new DirectoryCatalog(path, "MyApp*.dll");

builder.RegisterComposablePartCatalog(catalog);

container = builder.Build();

カタログを見ると、すべてのアセンブリのすべてのモジュールが存在することがわかります。

私が持っている質問は、読み込まれた各モジュールで Load メソッドを呼び出すように Autofac に指示するにはどうすればよいかということです。

builder.RegisterAssemblyModules のいくつかの使用法を考えていますが、それをカタログに結び付ける方法についての決定的な瞬間は (まだ) ありません。

ありがとう!

r.

4

1 に答える 1

0

この方法では、おそらくやりたいことができないでしょう。

モジュールを含むパーツ カタログを登録することにより、他の依存関係と同様に、それらをコンポーネントとして登録します。それらを元に戻す唯一の方法は、コンテナーをビルドして解決するIEnumerable<IModule>>ことですが、コンテナーが既にビルドされているため、Load を呼び出してもモジュールに内容が登録されません。

モジュールの登録をコンテナーに提供する場合は、MEF 統合ではなく、ContainerBuilder にモジュールを直接登録する必要があります。

于 2015-11-14T20:53:40.900 に答える