zoukankan      html  css  js  c++  java
  • 在WinRT程序中使用MEF

    今天试了一下在WinRT中使用MEF,这里简单的介绍一下步骤。

    首先,使用NuGet安装MEF

        

    然后,就可以使用MEF组装插件了,简单的示例如下:

        interface ILogger
        {
            void LogMessage(string msg);
        }

        [Export(typeof(ILogger))]
        class Logger : ILogger
        {
            public void LogMessage(string msg)
            {
                Debug.WriteLine(msg);
            }
        }


        public sealed partial class MainPage : Page
        {
            [Import]
            ILogger logger { get; set; }

            public MainPage()
            {
                this.InitializeComponent();
                Compose();

                logger.LogMessage("main page created");
            }

            private void Compose()
            {
                var configuration = new ContainerConfiguration()

                    .WithAssembly(this.GetType().GetTypeInfo().Assembly);
                var compositionHost = configuration.CreateContainer();
                compositionHost.SatisfyImports(this);
            }
        }

    虽然大体上和.Net中使用类似,不过一个比较明显的区别的是组装方式不同了。目前看来,只能使用SatisfyImports,而不能使用ComposeParts方法。这样就无法将成员导出了,由于这个强大的成员缺席,感觉基本上废了一半。好在WinRT程序基本上不太复杂,勉强还凑合能用。希望后续能够支持ComposeParts方法。

    除此之外,WinRT下缩水的部分还不少。例如,不能再Field或property上使用Import或Export,没有InheritedExport,这些都是非常实用的功能。导致WinRT上使用的时候有些束缚非常大的感觉,希望后续能得到进一步的完善。

     

  • 相关阅读:
    vue-awesome-swiper 子项目内容高度适配问题
    ajax的原理及应用
    display:none opacity:0以及visibility:hidden的区别
    javascript 创建型设计模式
    圣杯布局和双飞翼布局
    javascript->对象继承
    js 宏任务和微任务
    android->按钮底部定位上移
    ios移动端开发的坑
    jvm系列 (五) ---类加载机制
  • 原文地址:https://www.cnblogs.com/TianFang/p/3525094.html
Copyright © 2011-2022 走看看