我在库中有以下代码:
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); } }
}
我还能做什么?