有可能做这样的事情:
[Export(typeof(Settings)]
public static class Settings
{
public string Name {get;set;}
public string Color {get;set;}
}
[Import(typeof(Settings)]
Settings s;
Run Code Online (Sandbox Code Playgroud)
您无法导出静态类,因为没有要连接的实例.第二行:
Settings s;
Run Code Online (Sandbox Code Playgroud)
将是一个编译器错误,因为您无法实例化静态类.
话虽如此,这通常不是必要的.MEF将自动创建您的Settings类的单个实例(默认情况下)(假设它不是静态的),并将该实例设置为任何Import指定的实例.这有效地为您提供了"类似单身"的类,没有使用静态类或单例的任何缺点.