MEF 4.0构造函数依赖注入没有构造函数的属性

时间:2013-05-28 10:36:01

标签: c# .net-4.0 mef

我在库中有以下代码:

public interface IFirst { }
public interface ISecond { }
public class Second : ISecond
{
    public Second(IFirst injectedFirstService)
    {
    }
}

现在,我想在MEF容器中指定ISecond接口应该提供给具有Second实例的其他部分,并使用依赖注入构建。

我还想以一种不会强迫我将属性放在库类中的方式(即ImportingConstructor类中没有Second)的方式来执行此操作。

我知道以下解决方案:

  • 使用第二个子类或装饰Second的类,但仍然实现相同的ISecond接口,但具有适当的MEF属性。然后可以在组合目录中公开这些类型。
  • 编写MEF归属部分,基本上将构造函数导入和实例导出转换为属性导入和导出,按以下方式放入CompositionBatch实例:

    public class SecondExporter
    {
        [Import] IFirst First { get; set; }
        [Export] ISecond Second { get { return new Second(First); } }
    }
    

我还能做什么?

0 个答案:

没有答案