导入类的多个实例与MEF中的参数值不同

时间:2013-07-23 12:37:50

标签: .net mef

我想从一个类型2导出不同的实例,这些实例在传递给它们的构造函数的参数上有所不同。

更具体一点:

interface IA {
 string P { get; }
}

[Export(typeof(IA))]
[ExportMetadata("p", "1")]
[ExportMetadata("p", "2")]
class A : IA {

 [ImportingConstructor]
 public A( string p ) {
  this.P = p;
 }

 public string P { get; set; }
}

我想,在导入IA的集合时,获取两个A实例,这些实例使用不同的构造函数参数p实例化 - 一个1和其他2(我希望从导出元数据中获取这些参数)。

是否有可能在MEF中实现这一目标?

1 个答案:

答案 0 :(得分:2)

属性导出是否适用于您的方案?

class A : IA
{
    public A(string p) { P = p; }
    public string P { get; set; }
}

class AExports
{
    [Export(typeof(IA))]
    [ExportMetadata("p", "1")]
    public IA A1
    {
        get { return new A("1"); }
    }

    [Export(typeof(IA))]
    [ExportMetadata("p", "2")]
    public IA A2
    {
        get { return new A("2"); }
    }
}