计算MEF容器中的零件数量

时间:2011-06-17 03:43:38

标签: mef

我搞砸了我的代码 - 我创建了很多短生命周期的对象并使用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不是太棒了也没关系 - 这是测试的一部分,而不是正在运行的应用程序。非常感谢提前!

1 个答案:

答案 0 :(得分:1)

没有一种简单的方法可以做到这一点。您需要深入了解MEF的内部实现以查找此信息。由于源代码可用(mef.codeplex.com),这很有可能,但仍然不太简单。

相关问题