【发布时间】:2014-04-02 15:53:49
【问题描述】:
以下是我的场景。我试图通过在初始引导期间使用导出功能将类型与接口相关联。但是,MEF 抱怨 ImportCardinalityMismatchException。我对 MEF 还很陌生,我不知道这里出了什么问题?最简单的解决方法是删除继承。但是,我想避免它。
public interface IColourService
{
Color GetColourByCountry(string countryName);
}
public interface IKnownColourService:IColourService
{
bool IsKnownCountry(string countryName);
}
public interface IUnKnownColourService:IColourService
{
bool IsUnKnownCountry(string countryName);
}
[Export(typeof(IColourService))]
public class ColourService:IColourService
{
//implementation
}
[Export(typeof(IKnownColourService))]
public class KnownColourService:IKnownColourService
{
//implementation
}
[Export(typeof(IUnKnownColourService))]
public class UnknownColourService:IUnKnownColourService
{
//implementation
}
【问题讨论】:
-
您的问题可能是您拥有三个有效的
IColorService对象,而 MEF 只希望找到一个。我希望通过使用命名导入来解决这个问题。如果我足够强烈地认为这是问题所在,这将是一个答案。 -
@Magus 将检查命名导入。
标签: c# dependency-injection inversion-of-control mef ioc-container