我正在读某个地方用MEF我可以简单地将一个dll放入一个目录中,我的应用程序(带有一些MEF魔法)将能够读取它并执行其中的代码? 希望只有实现我定义的接口的类?
有人可以帮助我开始,有些链接可能是我的问题。
我查看了一些文档,但似乎没有什么似乎是我所追求的,当我不确切知道要搜索什么时它很棘手......
THX 小号
答案 0 :(得分:6)
以下是Brad Abrams的两篇MEF“入门”帖子:
请注意,这些是使用MEF的预览版本编写的,因此有一些更改。例如,AttributedAssemblyCatalog已重命名为AssemblyCatalog,AggregatingComposablePartCatalog现在为AggregatingCatalog,Silverlight上的PackageCatalog现在为DeploymentCatalog,并且还进行了一些其他API更改。
答案 1 :(得分:3)
尝试在MSDN杂志中阅读Glenn Block对MEF的介绍:
答案 2 :(得分:2)
您可以通过标记导入来支持“重组”:
[ImportMany(AllowRecomposition=true)]
public IMessageSender[] Senders { get; set; }
但是,据我所知,这不会自动加载程序集。进入.NET 4的MEF版本(我猜测复杂的预览版9)似乎不会自动加载程序集。我不确定这种行为是否随着MEF的发展而改变。
您需要添加FileSystemWatcher并调用Refresh(),例如DirectoryCatalog,并监听一个或多个这些事件:
catalog.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(Catalog_Changed);
container.ExportsChanged += new EventHandler<ExportsChangeEventArgs>(Container_ExportsChanged);
directoryCat.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(dCat_Changed);
答案 3 :(得分:1)
这是使用WPF,MVVM和MEF构建的demo application(用于组合和可扩展性)。
答案 4 :(得分:1)
This article 提供了一种与MEF合作的简单通用方法: