【问题标题】:module dependencies in prism wpfprism wpf中的模块依赖关系
【发布时间】:2013-03-27 17:58:57
【问题描述】:

我正在尝试编写类似于“统一模块化”项目的代码。 我构建了 2 个模块:模块 A(通过代码加载)和模块 D(从目录加载)。 都加载成功了。

但是当我尝试设置依赖时它不起作用。 我真的无法弄清楚这个项目中提到的依赖关系。 (我将依赖项设置为 ModuleA 类中的属性,moduleD 在构建后复制) 这是我的实现:

Bootstrapper.cs

protected override IModuleCatalog CreateModuleCatalog()
{
    return new AggregateModuleCatalog();
}

protected override void ConfigureModuleCatalog()
{
    base.ConfigureModuleCatalog();

    Type moduleAType = typeof(ModuleAModule);
    ModuleCatalog.AddModule(new ModuleInfo()
    {
        ModuleName = ModuleNames.ModuleA,
        ModuleType = moduleAType.AssemblyQualifiedName
    });    

    DirectoryModuleCatalog directoryCatalog = new DirectoryModuleCatalog() { ModulePath = @".\Modules" };
    ((AggregateModuleCatalog)ModuleCatalog).AddCatalog(directoryCatalog);
}

protected override void ConfigureContainer()
{
    base.ConfigureContainer();

    this.RegisterTypeIfMissing(typeof(IModuleTracker), typeof(ModuleTracker), true);
}

模块A.cs

[Module(ModuleName = ModuleNames.ModuleA)]
[ModuleDependency(ModuleNames.ModuleD)]
public class ModuleAModule : IModule
{
    private ILoggerFacade _logger;
    private IModuleTracker _moduleTracker;

    public ModuleAModule(ILoggerFacade logger, IModuleTracker moduleTracker)
    {
        _logger = logger;
        _moduleTracker = moduleTracker;

        _moduleTracker.ModuleConstructed("ModuleA");
    }

    public void Initialize()
    {
        _logger.Log("ModuleA demonstrates logging during Initialize().", Category.Info, Priority.Medium);

        _moduleTracker.ModuleInitialized("ModuleA");
    }
}

ModuleD.cs

[Module(ModuleName = ModuleNames.ModuleD)]
public class ModuleDModule : IModule
{
    private ILoggerFacade _logger;
    private IModuleTracker _moduleTracker;

    public ModuleDModule(ILoggerFacade logger, IModuleTracker moduleTracker)
    {
        _logger = logger;
        _moduleTracker = moduleTracker;

        _moduleTracker.ModuleConstructed("ModuleD");
    }

    public void Initialize()
    {
        _moduleTracker.ModuleInitialized("ModuleD");
    }
}

【问题讨论】:

    标签: wpf prism unity-container modularity


    【解决方案1】:

    也许这与加载模块的顺序有关?据我所见,模块 A 在具有依赖关系的 ModuleD 之前被加载。 不知道这是否对你有帮助,但这是我的第一个想法.. 您收到哪条错误消息?

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多