2

基本上...

    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));
    }

他们似乎都在这里做同样的事情,那么真正的区别是什么?我想我是在问你应该在它们内部做什么不同的事情(因为显然我可以移动代码)。

4

1 回答 1

0

PRISMsrun方法首先调用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();
于 2011-11-10T08:54:02.227 回答