2010-11-03 8 views
1

Est-il possible de le faire fonctionner à l'aide Microsoft Framework Extensibilité (MEF)C# MEF Ensemble propriété/Propriété Injection

Disons que j'ai l'interface

public interface IApplicationSettings 
{ 
    string SettingOne { get; } 
} 

classe qui implémentant cette interface

[Export(typeof(IApplicationSettings))] 
public class ApplicationSettings : IApplicationSettings 
{ 
    public string SettingOne 
    { 
     get 
     { 
      return "AAA"; 
     }   
    } 
} 

Classe qui contient mon interface en tant que propriété

public class IoCConstructorMef 
{ 
    [Import("ApplicationSettings", typeof(IApplicationSettings))] 
    public IApplicationSettings ApplicationSettings { get; set; } 
} 

alors je me attends que ma propriété va être injecté ici:

static void Main(string[] args) 
{ 
    IoCConstructorMef cm = new IoCConstructorMef(); 
    //cm.ApplicationSettings - is null 

} 

Attend il pas comme l'injection se produit dans ce cas. Est-ce que j'ai raté quelque chose ou fait quelque chose de mal?

Répondre

0

vous devez laisser MEF construire votre IoCConstructorMef cm. sinon l'importation n'aura pas lieu.

2

Vous devez laisser le CompositionContainer créer un objet pour vous afin que ses importations soient satisfaites. Ajoutez un ExportAttribute à IoCConstructorMef, créez un conteneur et appelez le container.GetExportedValue<IoCConstructorMef>().