我尝试编译从this page复制的MEF代码。
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时,我得到了这个错误信息。
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。
发布于 2011-06-09 05:43:01
MEF是否包含在Mono中不是问题所在,我认为...但是你需要MEF库(没有包含在Mono库中)。从Codeplex下载该库。然后从你的项目中引用它。如果这能行得通,那么Mono可能会玩得很好。
发布于 2011-06-09 05:35:41
据我所知,MEF目前还不是Mono的一部分。Mono与AddIn有“相似”的结构,但它与MEF不同。此时,在Mono中创建MEF将意味着滚动您自己的MEF,除非我错过了一些新的魔法。
https://stackoverflow.com/questions/6285522
复制相似问题