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

     

  • 相关阅读:
    hibernate对应的annocation版本
    Struts 2 OGNL
    Struts2的Stack Context和ValueStack
    Struts2中的OGNL详解
    struts2中根对象以及ognl .
    在Struts 2中实现IoC
    Struts2的属性驱动与模型驱动的区别
    Struts2的模型驱动
    Java中线程的锁和数据库中的事务隔离级别
    为什么socket编程要用到多线程
  • 原文地址:https://www.cnblogs.com/TianFang/p/3525094.html
Copyright © 2020-2023  润新知