2

我在库中有以下代码:

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

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

我还想以一种不强迫我将属性放在库类中的方式(即,ImportingConstructorSecond类中没有)来做到这一点。

我知道以下解决方案:

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

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

我还可以做些什么?

4

0 回答 0