2013-08-13 2 views
4

Когда довозит импорт недвижимости? Я думал, что они будут удовлетворены перед конструктором, поскольку свойства инициализируются до запуска конструктора, но следующий пример показывает, что ImportedClass является нулевым в конструкторе.Когда собственность Импорт удовлетворены?

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

public MyClass 
{ 
    [Import] 
    public ImportedClass ImportedClass {get;set;} 

    public MyClass() 
    { 
     //Imported Class is null at this point, so nothing can be done with it here. 
    } 
} 

ответ

6

Объект нельзя манипулировать до вызова его конструктора. MEF обеспечивает решение вашей проблемы, хотя, с интерфейсом под названием IPartImportsSatisfiedNotification

public MyClass : IPartImportsSatisfiedNotification 
{ 
    [Import] 
    public ImportedClass ImportedClass {get;set;} 

    public MyClass() 
    { 
     //Imported Class is null at this point, so nothing can be done with it here. 
    } 

    public void OnImportsSatisfied() 
    { 
    //ImportedClass is set at this point. 
    } 
} 

О действиях MEF требуется, чтобы установить параметры импорта; он сначала вызывает конструктор, затем устанавливает любые свойства, а затем вызывает метод уведомления.

Смежные вопросы