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's 的集合时,获取两个实例,A这些实例使用不同的构造函数参数值进行实例化p- 一个带有1,另一个带有2(我希望这些参数取自导出元数据)。

是否可以在 MEF 中存档?

4

1 回答 1

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"); }
    }
}
于 2013-07-23T15:29:39.100 回答