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上使用的时候有些束缚非常大的感觉,希望后续能得到进一步的完善。

     

  • 相关阅读:
    MySQL数据库基础
    Django框架
    Python基础
    C#
    小功能
    数据结构与算法
    C语言
    Robot Framework高级
    Robot Framework初级
    C++基础
  • 原文地址:https://www.cnblogs.com/TianFang/p/3525094.html
Copyright © 2011-2022 走看看