インターフェイスを実装するアセンブリを実行時にロードするコンソールアプリを構築しようとしています。重要なのは、.dllを変更することで変更できる命令を使用して.dllを作成することです。
私のVS2012ソリューションは、インターフェイス、それを実装するライブラリ、コンソールアプリの3つのプロジェクトで構成されています。(このため、3つすべてに独自の名前空間がありますが、これは問題になる可能性がありますか?)ライブラリとコンソールアプリの両方に、インターフェイスプロジェクトへの参照があります。
にアセンブリを追加した後、をObjectFactory
使用するとアセンブリが見つかりませんGetAllInstances
。を使用すると見つかりますAssembliesFromPath
が、追加は機能しないようです。
これが私のコードです:
var dir = "..\\..\\..\\ComputeLibrary\\bin\\Debug";
ObjectFactory.Initialize(cfg =>
{
cfg.Scan(scanner =>
{
scanner.AssembliesFromPath(dir);
scanner.AddAllTypesOf(typeof(ICompute)).NameBy(i => i.Name);
});
});
var list = ObjectFactory.GetAllInstances<ICompute>().ToList();
list.ForEach(item => item.Test());
誰かがソリューション全体を見たい場合は、ここから入手できます。
私はおそらくここで何か間違ったことをしているのですが、それが何であるかを見つけることができないようです。これはどのように使用されることになっていますか?それとも、このようなことをするためにMEFに目を向けるべきですか?