我有个用户控件,需要输出多次,摸索来摸索去找不出个所以然来,突然发现人家文档上写的很清楚
http://mef.codeplex.com/wikipage?title=Parts%20Lifetime&referringTitle=Guide
[PartCreationPolicy(CreationPolicy.NonShared)]
我的例子SoftDevelop.rar
主要是一个控件输出生命周期的问题,是共享还是非共享
如果是共享,那么生命周期内,这个控件就一个实例
如果是非共享,那么,每个需要的地方会自动生成一个实例
比如:
[Export( typeof(IOutputWindow))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class OutputWindow : UserControl, IOutputWindow
这样就是非共享
我在一个窗口中,输入3个OutputWindow,系统会自动生成3个对象
[Import(typeof(IOutputWindow))]
private IOutputWindow outputWindow = null;
[Import(typeof(IOutputWindow))]
private IOutputWindow outputWindow2 = null;
[Import(typeof(IOutputWindow))]
private IOutputWindow outputWindow3 = null;
如果不用
[Export( typeof(IOutputWindow))]
public partial class OutputWindow : UserControl, IOutputWindow
则生成的窗体如下:虽然输入3次,但只有一个对象实例