2017-09-01 6 views
0

Dans ma solution, j'ai un scénario où je dois utiliser les instances partagées de la classe modèle, qui est définie dans une classe et l'obtention de la valeur dans l'autre classe , tout le processus est fait par MEF. Le scénario est comme ci-dessous:Importation d'un modèle à diff endroits en l'exportant une fois en utilisant MEF

une classe I exporté Model comme ceci:

[Export(typeof(Model1))] 
[PartCreationPolicy(CreationPolicy = CreationPolicy.Shared)] 
Class Model1 
{ 
    int x; 
} 

... d'un projet. Plus tard, j'ai importé le constructeur d'autres classes:

Class XXX 
{ 
    private Model1 ob1; 
    [ImportingConstructor] 
    public XXX([Import] Model1 ob) 
    { 
     ob1 = ob 
     ob1.x=1; //Setting some values here 
    } 
} 

Class YYY 
{ 
    private Model1 ob1; 
    [ImportingConstructor] 
    public YYY([Import] Model1 ob) 
    { 
     ob1 = ob; 
     ob1.x=1; //Setting some values here 
    } 
} 

Pouvez-vous s'il vous plaît donner des suggestions pour ce qui doit être fait pour obtenir la même instance de Model1 modèle?

Répondre

0

Dans votre code BootStrapper remplacer la méthode ConfigureContainer et ajoutez les dépendances que vous voulez et les instancier

protected override void ConfigureContainer() 
{ 
     base.ConfigureContainer();  
     this.Container.ComposeExportedValue<Model1>(new Model1()); 
} 

Comme vous le modèle d'exportation comme partagé (singleton), assurez-vous que vous n'êtes pas instanciez modéliser n'importe où dans le code, sinon l'injection de dépendance sera interrompue, et vous finirez par obtenir une nouvelle instance de la classe Model1, ce qui n'est pas le cas que vous attendez.