#c# #wpf #module #prism #catalog
#c# #wpf #модуль #prism #каталог
Вопрос:
В принципе…
protected override IModuleCatalog CreateModuleCatalog()
{
var catalog = base.CreateModuleCatalog();
var moduleInfo = new ModuleInfo("HelloWorldModule", "Testing.HelloWorldModule"));
catalog.AddModule(moduleInfo);
return catalog;
}
protected override void ConfigureModuleCatalog()
{
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(typeof(Testing.HelloWorldModule));
}
Похоже, что они оба делают здесь одно и то же, так в чем же реальная разница? Полагаю, я спрашиваю, что вы должны делать по-другому внутри них (потому что, очевидно, я могу перемещать код).
Ответ №1:
Сначала вызывается run
метод PRISMs CreateModuleCatalog
и присваивается возвращаемое значение BootStrapper.ModuleCatalog
. Итак, на самом деле вы должны создать ModuleCatalog там. Для настройки вы могли бы использовать любой метод, единственное отличие было бы в том, где в журнале будет показано потенциальное исключение. Соответствующий код в MefBootstrapper.Run
, например, таков:
this.Logger.Log(Resources.CreatingModuleCatalog, Category.Debug, Priority.Low);
this.ModuleCatalog = this.CreateModuleCatalog();
if (this.ModuleCatalog == null)
{
throw new InvalidOperationException(Resources.NullModuleCatalogException);
}
this.Logger.Log(Resources.ConfiguringModuleCatalog, Category.Debug, Priority.Low);
this.ConfigureModuleCatalog();