When are property imports satisfied? I thought they would be satisfied before the constructor, as properties are initialized before the constructor runs, but the following example shows ImportedClass
to be null in the constructor.
I know I can resolve this by using an ImportingConstuctor; this is for sake of understanding when the property imports are satisfied.
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.
}
}
An object cannot be manipulated before its constructor is being called. MEF provides a solution for your problem though, with an interface called 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.
}
}
About the actions MEF takes to set your imports; it first calls the constructor, then sets any properties, then calls the notification method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With