В чем разница между CreateModuleCatalog () и ConfigureModuleCatalog () в PRISM? - PullRequest
2 голосов
/ 10 ноября 2011

В основном ...

    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 Ответ

0 голосов
/ 10 ноября 2011

PRISMs run метод сначала вызывает 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();
...