2011-04-04 35 views
4

我想围绕MEF围绕我的大脑,而我正在努力的一件事是CompositionBatchCompositionBatch和目录之间有什么区别?

CompositionBatch似乎是一种添加或删除MEF系统输出的方法,但显然它是can't remove something that was added via a catalog,所以它的用处有限。由于某种原因,它也在容器级别上运行,而不是在目录级别上运行其他所有在MEF中注册类型的操作。

据我所知,CompositionBatch只是一种多余的方式来做你已经可以用目录做的事情。如果我想在应用程序启动后注册两种新类型,则不需要CompositionBatch;我可以将AggregateCatalog传递给我的容器,然后当我准备好时,从我想注册的两种新类型创建一个TypeCatalog,将其添加到AggregateCatalog,并且所有内容都可以正常工作。然后是CompositionBatch,它通过向容器添加方法来解决此目录问题。

我错过了什么?为什么CompositionBatch存在?事实上,它是否做过任何你无法做到的事情?为什么我们需要一种在容器级别做同样事情的方式?

回答

6

如果类型在目录中,则MEF将在需要时创建该类型的对象。 CompositionBatch允许您将对象添加到您自己创建的作品中。我们建议一般坚持使用目录,但有些情况下需要自己创建对象,或者由其他组件(例如XAML分析器)创建,并且需要将其放入容器中。

+0

那么,如果你正在初始化一个模块,那么你如何在类中添加一个类? – 2014-01-05 00:51:51

相关问题