【发布时间】:2011-04-05 11:09:04
【问题描述】:
我了解 CompositionContainer.ReleaseExport() 的工作原理如下:
- 执行部件的 Dispose 方法;
- 它会从 CompositionContainer 中移除部件。
我附上了一个简短的程序。当程序运行时,我希望看到
- 在控制台窗口中输入“this is Foo.Dispose”,然后
- 在调试器中,composablePartCatalog.Parts 计数应为零。
不是这样的。有人能解释一下吗?
针对 Daniel Plaisted 的回复,我已经简化了示例程序。我仍然没有在控制台窗口中看到文本“这是 Foo.Dispose”。
命名空间 MefCa06 { 使用系统; 使用 System.ComponentModel.Composition; 使用 System.ComponentModel.Composition.Hosting; 使用 System.Reflection; [ 导出属性 , PartCreationPolicyAttribute(CreationPolicy.NonShared) ] 公共类 Foo : IDisposable { 公共无效显示消息() { Console.WriteLine("这是 Foo.ShowMessage"); } 公共无效处置() { Console.WriteLine("这是 Foo.Dispose"); } } 课堂节目 { [导入属性] 公共 Foo FooProperty { 获取;放; } 静态无效主要(字符串 [] 参数) { 程序程序 = 新程序(); 组合容器组合容器 = 新的 CompositionContainer(新的 AssemblyCatalog(Assembly.GetExecutingAssembly())); compositionContainer.ComposeParts(程序); 程序.FooProperty.ShowMessage(); Lazy【问题讨论】:
标签: mef