MEF: MSDN 杂志上的文章(9) 控制部件创建策略 ???
http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx
默认情况下,容器中的所有部件实例都是单例,因而由在容器中导入它们的所有部件共享。因此,SalesOrderView 和 ViewFactory 的所有导入程序都将获得同一实例。在很多情况下需要这样,因为这样便无需拥有其他组件所依赖的静态成员。但是,有时每个导入程序都需要获取自己的实例,例如用于同时在屏幕上查看多个 SalesOrderView 实例。
MEF 中的部件创建策略可以是以下三个值之一:CreationPolicy.Shared、CreationPolicy.NonShared 或 CreationPolicy.Any。若要指定部件的创建策略,请使用 PartCreationPolicy 特性修饰部件.
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(typeof(ISalesOrderView))]
public partial class SalesOrderView : UserControl, ISalesOrdderView
{
public SalesOrderView()
{
}
}
还可以对导入设置 RequiredCreationPolicy 属性,也可在导入程序端指定 PartCreationPolicy。