MEF可以导出/导入静态类吗?

时间:2012-10-18 16:05:57

标签: c# .net-4.0 mef

是否可以执行以下操作:

[Export(typeof(Settings)]
public static class Settings
{
   public string Name {get;set;}
   public string Color {get;set;}
}

[Import(typeof(Settings)]
Settings s;

1 个答案:

答案 0 :(得分:5)

您无法导出静态类,因为没有要连接的实例。第二行:

Settings s;

将是编译器错误,因为您无法实例化静态类。

话虽如此,这通常不是必需的。 MEF将自动创建Settings类的单个实例(默认情况下)(假设它不是静态的),并将相同的实例设置为指定的任何Import。这有效地为您提供了“类似单身”的类,没有使用静态类或单例的任何缺点。