我在库中有以下代码:
public interface IFirst { }
public interface ISecond { }
public class Second : ISecond
{
public Second(IFirst injectedFirstService)
{
}
}
现在,我想在 MEF 容器中指定ISecond
接口应该提供给其他部分,Second
并使用依赖注入构建的实例。
我还想以一种不强迫我将属性放在库类中的方式(即,ImportingConstructor
在Second
类中没有)来做到这一点。
我知道以下解决方案:
- 使用 second 的子类或装饰
Second
但仍实现相同ISecond
接口但具有适当 MEF 属性的类。然后可以在组合目录中公开这些类型。 编写一个 MEF 属性部分,它基本上将构造函数导入和实例导出转换为属性导入和导出,以下列方式放入
CompositionBatch
实例中:public class SecondExporter { [Import] IFirst First { get; set; } [Export] ISecond Second { get { return new Second(First); } } }
我还可以做些什么?