关于MEF的一些简单的说明

刚刚看了一下MEF的一些示例, 网上的教程太复杂, 理解起来有些麻烦. 经过阅读别人的代码, 把自己的理解记录一下, 方便以后使用.

MEF能干什么?

首先回答这个问题, MEF可以将两个对象组合到一起, 这里的对象可以是变量, 类, 属性等. 然后用一个对象对替换另一个对象.

比如说: 在class StringProvider中, 有属性Output,   而在class Client中要使用Output的值. 使用MEF就可以方便的将StringProvider中的Output拿到Client这个类中使用.

而如何去组合使用就是MEF做的事情.


代码说明

下面的代码中, 定义为[Export("Message")]的Output就是将要被其它地方所使用的属性.

[Import("Message")]中Import是说明, private string message的这个变量将会使用Export中Output的值.

"Message"所代表的意思是匹配的字符串, 用于指定一对Export和Import.

 public class StringProvider
    {
        [Export("Message")]
        public string Output
        {
            get { return "Hello MEF Framework"; }
        }
    }

    public class Client
    {
        [Import("Message")]
        private string message = null;
        public void Print()
        {
            Console.WriteLine(this.message);
            Console.ReadLine();
        }
    }

让MEF组装吧

                Client client = new Client();
                CompositionContainer container = new CompositionContainer();
                CompositionBatch batch = new CompositionBatch();
                batch.AddPart(new StringProvider()); //将被组装对象放入.
                batch.AddPart(client); //将组装对象放放
                container.Compose(batch); //MEF对象根据Export和Import的定义自动的实现替换操作
                client.Print();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Managed Extensibility Framework(MEF)是 .NET Framework 和 .NET Core 中的一个插件化框架,可以帮助开发者实现可扩展的应用程序。MEF 框架在 .NET Core 中是自带的,不需要额外安装。 使用 MEF 框架实现插件化开发的步骤如下: 1. 创建插件接口 首先需要定义一个插件接口,该接口定义了插件的基本功能和方法。例如: ```csharp public interface IPlugin { string Name { get; } void Execute(); } ``` 2. 创建插件实现类 接着需要创建一个或多个实现插件接口的类。例如: ```csharp [Export(typeof(IPlugin))] public class Plugin1 : IPlugin { public string Name => "Plugin1"; public void Execute() { Console.WriteLine("Plugin1 executed."); } } [Export(typeof(IPlugin))] public class Plugin2 : IPlugin { public string Name => "Plugin2"; public void Execute() { Console.WriteLine("Plugin2 executed."); } } ``` 注意:实现类需要使用 `[Export]` 属性进行标记,表示该类是一个插件。 3. 创建主程序 创建主程序并使用 MEF 框架加载插件。例如: ```csharp class Program { static void Main(string[] args) { var catalog = new DirectoryCatalog("plugins"); // 插件目录 var container = new CompositionContainer(catalog); foreach (var plugin in container.GetExportedValues<IPlugin>()) { Console.WriteLine("Loaded plugin: " + plugin.Name); plugin.Execute(); } } } ``` 这段代码会从指定的插件目录中加载所有插件,并执行 `Execute` 方法。 注意:需要在主程序中添加对 `System.ComponentModel.Composition` 命名空间的引用,才能使用 MEF 相关的类。 这就是使用 MEF 框架实现插件化开发的基本步骤。在实际应用中,可以根据具体的需求进行更加复杂的插件实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值