2010-08-12 2 views
1

동일한 내보내기의 여러 인스턴스를 만들 때 MEF를 사용하고 있습니다.MEF 컨테이너로 생성 된 추적 인스턴스

:

나는 여기

코드의 ... 내가 만든 인스턴스를 추적하고 싶습니다, 그리고 중 컨테이너를 조회하거나 recomposited 컬렉션을 사용하고,하지만 난 내 인스턴스를 결코
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; } 
    } 

내가 원하는 것은 이미 존재하는 인스턴스이며, 존재하지 않는 인스턴스가 있으면 새로운 인스턴스를 생성하지 않는 것입니다.

덕분에, 플로리안

답변

1

MEF는이 기능을 제공하지 않습니다. IFoo를 구현할 때마다 IFooTracker를 가져 와서 IFoo를 등록하기 위해 IFooTracker에서 메서드를 호출하면됩니다.

+0

+1 딩 딩. 귀하의 IFooTracker 정적 및 IDisposable 등록을 청소하지만, 이것은 당신이 아무것도의 인스턴스를 추적하는 방법입니다. –

관련 문제