MEF官方解释 : MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项。 通过 MEF,不仅可以在应用程序内重用扩展,还可以在应用程序之间重用扩展。
作用: (1) 使用MEF是为了提高程序的可扩展性。MEF会根据指定的导入导出自动去发现匹配的扩展,获取到相应类型的对象,不需要进行复杂的程序配置
(2) 程序设计有几个原则,“高内聚,低耦合”就是其中一个。使用MEF可以帮助我们减少内库之间的耦合。
NuGet安装MEF2, 包名是 Microsoft.Composition,适用于 .NET Framework 4.5 及以上,.NET Core 和各种 .NET 移动平台
使用说明:添加引用System.Composition,
MEF 完全使用特性来管理容器中的依赖,Import/Export:在类型上标记 [Export]
可以让容器发现这个类型。[Export]
允许带两个参数,一个契约名称,一个契约类型。在 [Import]
的时候,相同的契约名称会被注入
示例:
1. 简单使用
类ModelA实现接口IModel,ModelA添加特性[Export(typeof(IModel))],创建Container容器管理依赖
namespace MEF.Interface
{
public interface IModel
{
void Do();
}
}
namespace MEF.ViewModels
{
[Export(typeof(IModel))]
public clas