2017-09-01 183 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类的新实例,而这并不是您期望的情况。