首页 / 软件开发 / .NET编程技术 / MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)2012-07-11 博客园 Beniao在MEF中,使用[System.ComponentModel.Composition.ExportAttribute]支持多种级别的导出部件配置,包括类、字段、属性以及方法 级别的导出部件,通过查看ExportAttribute的源代码就知道ExportAttribute被定义为 Attribute,并为其设置了使用范围。[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method,
AllowMultiple = true, Inherited = false)]
public class ExportAttribute : Attribute
{
//......
}
当任何一个类对象或是其内部的字段、属性、方法需要作为可组合部件的时候,就可以使用[ExportAttribute]将其标注为可导出部件 。比如需要将一个对象做为可组合部件进行导出(就是类级别的导出),只需要在类上添加[ExportAttribute]就行了,详细的应用可参考 《MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用》,下面为演示代码:[System.ComponentModel.Composition.Export]
public class DBLogger
{
}
对于字段、属性级别的导出同类是一样的,通样使用[ExportAttribute]进行标注,下面代码块演示了一个完整的属性导入与导出的示 例。namespace MEFTraining.ExmprtImport
{
public partial class MainPage : UserControl
{
[Import("Name")]
public string BookName { get; set; }
public MainPage()
{
InitializeComponent();
CompositionInitializer.SatisfyImports(this);
MessageBox.Show(BookName);
}
}
public class BookService
{
[Export("Name")]
public string BookName
{
get { return "《MEF程序设计指南》"; }
}
}
}