Импорт Mef в объекты, созданные после compose
Я создаю контейнер при запуске, а затем создаю экземпляр объекта, который имеет свойство Import. Это свойство имеет значение Null, когда я пытаюсь его использовать.
Как MEF обрабатывает объекты, созданные позже. Я отказываюсь верить, что вы должны создавать экземпляры всех объектов при запуске.
1 ответ:
Вам не нужно создавать экземпляры, как только вы создадите контейнер, это не будет никакой реальной помощью для кого-либо. Как вы создаете свои экземпляры? Вот несколько примеров, приведенных в примере класса:
[Export] public class MyClass { [Import] public MyOtherClass OtherClass { get; set; } }
Я мог бы:
var myClass = container.GetExportedValue<MyClass>(); // This would automatically compose. var myExport = container.GetExport<MyClass>(); var myClass = myExport.Value; // This would automatically compose. var myClass = new MyClass(); container.SatisfyImportsOnce(myClass); // Manually compose your part.
Или вручную намотать все это вместе, используя
CompositionBatch
и т. д.