WPFプロジェクトにPrism4とMEFを使用しています。ディレクトリからロードする必要のあるDLLがいくつかあります。これらのDLLはIGameを介してIModuleを実装し、適切に形成されます(または少なくとも私はそう思います):
[Module(ModuleName = "SnakeModule")]
class SnakeModule : IGame
{
public void Initialize()
{
Console.WriteLine("test");
}
public void StartGame()
{
throw new NotImplementedException();
}
}
現在、メインプロジェクトはコンパイル中ですが、モジュールは初期化されません。ブートストラッパーのセットアップ方法を理解するのに問題があり、 DirectoryModuleCatalogの完全な例がないため、ドキュメントはあまり役に立ちません。モジュール性クイックスタートもコンパイルされていません。これが私のブートストラッパーです:
class BootStrap : MefBootstrapper
{
protected override DependencyObject CreateShell()
{
return ServiceLocator.Current.GetInstance<Shell>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow = (Window)this.Shell;
Application.Current.MainWindow.Show();
}
protected override void ConfigureAggregateCatalog()
{
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(BootStrap).Assembly));
}
protected override IModuleCatalog CreateModuleCatalog()
{
DirectoryModuleCatalog catalog = new DirectoryModuleCatalog() { ModulePath = @"..\..\..\GameTestLib\bin\Debug" };
return catalog;
}
protected override void ConfigureContainer()
{
base.ConfigureContainer();
}
}
DLLのパスは正しいです。要約すると、私の質問は次のとおりです。ブートストラッパーをどのように設定する必要がありますか?