我搞砸了我的代码 - 我创建了很多短生命周期的对象并使用MEF来解决依赖关系。任何有MEF经验的人都知道,MEF会对这些人进行参考。结果是短寿命变成LOOONNNGGG寿命。因此,这很容易修复 - 在CompositionContainer上使用SatisfysImportsOnce。
但是我现在想把这个x-check作为我单元测试的一部分,这样我就不会意外地在容器中添加一个不正确的部分(或者我在代码搜索中错过了一个我刚才做的)。 Sooo ......怎么做?
我的代码有点抽象,看起来像这样:
_catalog = new AggregateCatalog();
_container = new CompositionContainer(_catalog);
_batch = new CompositionBatch();
然后我将部件添加到批处理中,并调用_container.Compose(_batch)。我想也许以下类似的东西可以计算,但它总是返回零:
int nParts1 = _container.Parts.Count();
int nParts2 = _container.Catalogs.Sum(c => c.Parts.Count());
然而,这两者都归零。我怎样才能获得测试的这个数量?如果perf不是太棒了也没关系 - 这是测试的一部分,而不是正在运行的应用程序。非常感谢提前!