通过使用MEF导出模型,在差异处导入模型

时间:2017-09-01 09:59:44

标签: c# 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模型的相同实例需要做些什么提出建议?

1 个答案:

答案 0 :(得分:0)

在您的BootStrapper代码中重写方法ConfigureContainer并添加所需的依赖项并实例化它们

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

当您将模型导出为共享(单例)时,请确保您没有在代码中的任何位置实例化模型,否则依赖注入将被破坏,您将最终得到一个新的Model1类的实例,与您期望的情况不同。