首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mono上运行MEF

在mono上运行MEF
EN

Stack Overflow用户
提问于 2011-06-09 05:30:01
回答 2查看 655关注 0票数 2

我尝试编译从this page复制的MEF代码。

代码语言:javascript
复制
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;
using System;

public class Program
{
[Import]
public IMessageSender MessageSender { get; set; }

public static void Main(string[] args)
{
 Program p = new Program();
 p.Run();
}

public void Run()
{
 Compose();
 MessageSender.Send("Message Sent");
}

private void Compose()
{
 AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
 var container = new CompositionContainer(catalog);
 container.ComposeParts(this);
}
}

public interface IMessageSender
{
void Send(string message);
}

[Export(typeof(IMessageSender))]
public class EmailSender : IMessageSender
{
public void Send(string message)
{
 Console.WriteLine(message);
}
}

当我运行这个命令dmcs example.cs时,我得到了这个错误信息。

代码语言:javascript
复制
ex.cs(1,29): error CS0234: The type or namespace name `Composition' does not exist in the namespace `System.ComponentModel'. Are you missing an assembly reference?

要删除此错误消息,我需要提供什么参考库?

已添加

dmcs ex.cs /r:System.ComponentModel.Composition.dll起作用了。用户不需要从codeplex下载dll。

EN

回答 2

Stack Overflow用户

发布于 2011-06-09 05:43:01

MEF是否包含在Mono中不是问题所在,我认为...但是你需要MEF库(没有包含在Mono库中)。从Codeplex下载该库。然后从你的项目中引用它。如果这能行得通,那么Mono可能会玩得很好。

票数 2
EN

Stack Overflow用户

发布于 2011-06-09 05:35:41

据我所知,MEF目前还不是Mono的一部分。Mono与AddIn有“相似”的结构,但它与MEF不同。此时,在Mono中创建MEF将意味着滚动您自己的MEF,除非我错过了一些新的魔法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6285522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档