• Prism 5 + MEF中的ModuleCatalog.CreateFromXaml问题


      protected override IModuleCatalog CreateModuleCatalog()
            {
                return Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml(new Uri("ModuleCatalog.xaml", UriKind.Relative));
            }

    .net的背景,就不说了。用这个代码作为开头吧。在Bootstrapper载入部件时需要用到。

    ModuleCatalog有很多种方法可以导入,总得来说就是灵活的。但偏偏这种看上去比较酷一点的(没有MyApp.exe.config文件,也不写死在cs代码里),却怎么也调试不出来。报的错误有这几种:

    There is currently no moduleTypeLoader in the ModuleManager that can retrieve the specified module
    
    {"“f”(十六进制值 0x0C)是无效的字符  
    
    The IModuleCatalog is required and cannot be null in order to initialize the modules.  

    问题主要出在:

    1. Xaml文件中定义的ModuleName与ExportModule的名称不符

    2. Xaml文件的编译方式选择不正确

    3. 忘了

    我项目中通过的几个相关代码和设置如下,环境vs2013,Prism 5 + MEF,wpf。

    MuduleCatalog.xaml:

    <Modularity:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                              xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism.Composition">
        <Modularity:ModuleInfo Ref="file://XianFeng.Client.Modules.Notify.dll"
                               ModuleName="NotifyModule"
                               InitializationMode="WhenAvailable"
                               ModuleType="XianFeng.Client.Modules.Notify.NotifyModule, XianFeng.Client.Modules.Notify" />
    </Modularity:ModuleCatalog>

    相应的,xxxNotify.dll中的输出文件NotifyModule.cs:

    namespace XianFeng.Client.Modules.Notify
    {
        [ModuleExport("NotifyModule", typeof(NotifyModule))]
        public class NotifyModule : IModule
        {
            [Import]
            public IRegionManager regionManager;
    
            public void Initialize()
            {
                this.regionManager.RegisterViewWithRegion(RegionNames.NotifyRegion, typeof(Views.Notify));
            }
        }
    }

    ModuleCatalog.xaml文件的属性:

    生成操作是Resource是我自己摸出来的,bing到的一些资料上说的都是老版本的吧,都不对,包括那个Mike Taulty的视频的也不对。

    解决问题!

  • 相关阅读:
    pytorch dataloader num_workers堵塞、卡死解决方法(对我来说本质原因是OSError: [WinError 1455] 页面文件太小,无法完成操作)
    opencv
    深度学习 图片分类调参小结
    Pytorch错误:Torch not compiled with CUDA enabled
    关于Windows与NOI LINUX虚拟机复制粘贴的问题
    [复习]基础背包dp
    模拟 8
    [复习]基础线性dp
    [复习]分块/莫队
    [复习]线段树基础
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/4955753.html
Copyright © 2020-2023  润新知