如果可能的话,在使用ExportFactory创建的对象上调用dispose方法?
工厂在这里:
public interface IViewModelsControler
{
IChatViewModel CreatChatViewModel();
}
[Export(typeof(IViewModelsControler))]
public class ViewModelsControler:IViewModelsControler
{
[Import]
public ExportFactory<IChatViewModel> ChatViewFactory { get; set; }
public IChatViewModel CreatChatViewModel()
{
return ChatViewFactory.CreateExport().Value;
}
}
创建对象:
var chatScreen = ViewModelControler.CreatChatViewModel();
我想调用chatScreen.Dispose()。
ChatViewModel调用如下所示:
[Export(typeof(IChatViewModel))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class ChatViewModel : Screen, IChatViewModel
{}
答案 0 :(得分:2)
您应该在对CreateExport()的调用返回的ExportLifetimeContext上调用dispose,而不是在导出的值本身上调用dispose。这不仅会处理ViewModelController,还会处理为满足其导入而创建的任何NonShared一次性部件。
答案 1 :(得分:0)
您的chatScreen合约需要公开Dispose()方法。
public interface IViewModelsControler
{
IChatViewModel CreatChatViewModel();
void Dispose(); // add to expose your dispose method
}
这是关于垃圾收集的另一个answer,如果这就是你想要的。