Отслеживание экземпляров, созданных контейнером MEF - PullRequest
1 голос
/ 12 августа 2010

Я использую MEF для создания нескольких экземпляров одного и того же экспорта.

Я бы хотел отслеживать созданные мной экземпляры и либо запрашиваю контейнер, либо использую перекомпонованную коллекцию, ноЯ никогда не получаю свои экземпляры ...

Вот код:

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 Ответ

1 голос
/ 12 августа 2010

MEF не обеспечивает эту функцию.Вы можете сделать это, если каждая реализация IFoo импортирует IFooTracker и вызывает метод в IFooTracker для регистрации IFoo.

...