Mef импорт в объекты, созданные после создания - PullRequest
2 голосов
/ 04 октября 2011

Я создаю контейнер при запуске, а затем создаю экземпляр объекта со свойством Import.Это свойство имеет значение Null, когда я пытаюсь его использовать.

Как MEF обрабатывает объекты, созданные позже.Я отказываюсь верить, что вам нужно создавать все объекты при запуске.

1 Ответ

4 голосов
/ 04 октября 2011

Вам не нужно создавать экземпляры, как только вы создаете контейнер, это никому не поможет. Как вы создаете свои экземпляры? Вот несколько примеров, приведенных для примера класса:

[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 и т. Д.

...