[英]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.