繁体   English   中英

通过使用MEF导出一次在差异位置导入模型

[英]Importing a Model at diff places by exporting it once using 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模型的同一实例需要做些什么提供建议?

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

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

当您将模型导出为Shared (singleton)时,请确保未在代码中的任何地方实例化模型,否则依赖项注入将被破坏,最终您将获得Model1类的新实例,但事实并非如此您正在期待。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM