我正在尝试开发像VS编辑器这样的编辑器,其中包括FTP,TelNet(拖放设计器并在PropertyGrid中相互连接它们等等)然后执行。最好使用MEF扫描所有具有接口IComponent的dll-s,然后使用反射从dll-s获取原始Object。示例
[Export(typeof(ICOmponent))]
[MetadataExport("Name", "FTP")]
public class FTP : ICOmponent
{
public string Server { get; set; }
public void Start()
{
....ConectTOServer(Server);
}
}
[Export(typeof(ICOmponent))]
[MetadataExport("Name", "MessageBox")]
public class MessageBox : ICOmponent
{
public string Message { get; set; }
public void Start()
{
System.Windows.Forms.MessageBox.Show(Message);
}
}
public interface ICOmponent
{
void Start();
}
或者是从ICOmponent获取MEF中的原始对象的另一种方法,例如从Metadata中获取原始对象。因为PropertyGrid是用于显示FTP服务器和From MessageBox消息的属性的真实对象。 抱歉我的英语不好。
答案 0 :(得分:1)
你的写作看起来很普遍,关于MEF这个来自微软Mike Taulty的视频系列可能有所帮助:“Learning about MEF in SL4 from Mike Taulty”;看这个系列不会浪费你的时间。
您可能更喜欢reading关于MEF。
答案 1 :(得分:0)
要使MEF
正常工作,您应用程序上删除的任何程序集/ dll都必须实现Exports
。如果没有,您将无法Import
任何内容。
要使用没有任何导出的assembly / dll,请使用反射来搜索实现IComponent
的类型。并使用Activator
类从其类型信息创建实例。