2012-10-18 74 views
5

是否有可能做这样的事情:MEF导出/导入静态类吗?

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

[Import(typeof(Settings)] 
Settings s; 

回答

5

不能导出一个静态类,因为没有实例线了。第二行:

Settings s; 

将是一个编译器错误,因为你不能实例化一个静态类。

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