В чем разница между CreateModuleCatalog() и ConfigureModuleCatalog() в PRISM?

#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();