所以我遇到了一个问题,我的长时间运行过程在内存中变得非常大。在获得了堆栈转换并查看堆后,我注意到我使用的组合容器变得相当大。我正在使用静态容器,我认为我的所有作品都被标记为共享但是我可能错过了一些...
但是这让我研究了如何处理共享和非共享之间的这种关系,我注意到很多时候人们使用子容器来满足进口,然后进行处理以使其不会变大。所以我沿着这条路走下去找到了这个方便的家伙 http://mef.codeplex.com/wikipage?title=Filtering%20Catalogs
根据共享和非共享导出创建过滤目录...
我遇到的问题是,在满足导入共享导入的对象时,我得到拒绝异常...所以如果我这样做
NonSharedChildContainer.SatisfyImportsOnce(someObject)
我得到一个拒绝异常,因为那里有一个属性,它有一个共享导入...看起来如果你有一个包含共享导入和非共享导入的对象,那么就没有办法在这种格式带有子容器?
我唯一想到的就是 1)浏览我的代码并使用GetExport而不是satisfimports 2)我可能会超载MEF,因为我有点使用它作为我们的IoC容器,我知道总是有很多讨论......所以最好只使用Unity或类似的东西