在我的解决方案中,我有一个场景,我需要使用模型类的共享实例,它在一个类中设置,并在其他类中获取值,整个过程通过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 :(得分:0)
在您的BootStrapper代码中重写方法ConfigureContainer并添加所需的依赖项并实例化它们
protected override void ConfigureContainer()
{
base.ConfigureContainer();
this.Container.ComposeExportedValue<Model1>(new Model1());
}
当您将模型导出为共享(单例)时,请确保您没有在代码中的任何位置实例化模型,否则依赖注入将被破坏,您将最终得到一个新的Model1类的实例,与您期望的情况不同。