2017-09-01 184 views
0

在我的解決方案中,我有一個場景,我需要使用模型類的共享實例,該實例在一個類中設置,並且在其他類中獲取值,整個過程通過MEF完成。該方案是如下:通過使用MEF導出一次模型在不同位置導入模型

我導出的Model類是這樣的:

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

...從一個項目。後來,我進口的其他類的構造函數:

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 
    } 
} 

你能不能請給需要做得到Model1模型的同一個實例什麼建議嗎?

回答

0

在你的引導程序的代碼覆蓋的方法ConfigureContainer,並添加所需的依賴和實例化它們

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

當你導出模型共享(單),請確保你沒有實例化在代碼中的任何地方建模,否則依賴注入將會被破壞,並且最終會得到Model1類的新實例,而這並不是您期望的情況。