Я начинаю использовать MEF, и у меня есть класс с несколькими конструкторами, например:
[Export(typeof(ifoo))]
class foo : ifoo {
void foo() { ... }
[ImportingConstructor]
void foo(object par1) { ... }
}
Я использую catalog.ComposeExportedValue()
при составлении, чтобы передать значение par1
второму конструктору:
...
catalog.ComposeExportedValue(par1Value);
catalog.ComposeParts(this);
...
Для хранения компонентов, которые я использую:
[ImportMany(typeof(ifoo))]
public List<Lazy<ifoo, ifoometadata>> FooList { get; set; }
И для создания экземпляра foo
я использую свойство value, FooList[0].Value
.
Все работает нормально, за исключением того, что второй конструктор класса foo
никогда не вызывается. Что случилось?
Как выбрать конструктор, который я хочу использовать, когда MEF создает экземпляр класса?