2011-06-17 51 views
1

我搞砸了我的代码 - 我创建了很多短生命周期的对象,并使用MEF来解决依赖关系。任何有MEF经验的人都知道,MEF坚持这些人的参考。结果是短寿命变为LOOONNNGGG寿命。所以,这很容易解决 - 在CompositionContainer上使用SatisfysImportsOnce。计算MEF容器中零件的数量

但是我想现在对这个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

有没有一种简单的方法来做到这一点。你需要在MEF的内部实现中寻找这些信息。由于源代码可用(mef.codeplex.com),这很有可能,但仍然不是太简单。

+0

好的,谢谢。我忘记了他们在保持这一点。我会看看那个。我想原因是不容易的是B/C它已被抽象掉。如果我找到任何东西,我会回信。 – Gordon 2011-06-22 03:29:30