Tracking instances created by a MEF container
我正在使用 MEF 创建同一个导出的多个实例。
我想跟踪我创建的实例,并且正在查询容器或使用重新组合的集合,但我从来没有得到我的实例...
这是代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | interface IFoo{}; [Export(typeof(IFoo)),PartCreationPolicy(CreationPolicy.NonShared)] class Foo{}; class FooTracker{ CompositionContainer _container; int HowManyValues() { // this always returns 1 and invokes a constructor return _container.GetExportedValue<IFoo>().Count(); } int HowManyExports(){ // idem return _container.GetExports<IFoo>().Count(); } // idem [ImportMany(AllowRecomposition=true,AllowRecomposition=true)] protected IEnumerable<IFoo> Foos { get; set; } } |
我想要的是已经存在的实例,如果没有就不要创建一个新的实例。
谢谢,
弗洛里安
MEF 不提供此功能。您可以通过让 IFoo 的每个实现导入一个 IFooTracker 并在 IFooTracker 中调用一个方法来注册 IFoo.