我得到"无法转换类型' PlanEntity'到了“TDestination'"在单元测试中模拟我的自动映射器时编译时错误。
public TDestination Map<TSource, TDestination>(TSource source) where TDestination : class
{
var value = source as PlanEntity;
if (value != null)
{
return (TDestination)value;
}
return null;
}
然而,当我映射IEnumerable时它运行得很好。
public TDestination Map<TDestination>(object source) where TDestination : class
{
var value = source as IEnumerable<PlanEntity>;
if (value != null)
{
var results = value.Select(i =>
new PlanModel
{
Id = i.Id,
Name = i.Name
});
return (TDestination)results;
}
return null;
}
我也试过这样做,但它也给出了同样的错误。
public TDestination Map<TSource, TDestination>(TSource source) where TDestination : class
{
var value = source as PlanEntity;
if (value != null)
{
var planModel = new PlanModel
{
Id = value.Id,
Name = value.Name
};
return (TDestination)planModel;
}
return null;
}
我的mockMapper类中有三个覆盖。
TDestination Map<TSource, TDestination>(TSource source) where TDestination : class;
TDestination Map<TSource, TDestination>(TSource source, TDestination destination) where TDestination : class;
TDestination Map<TDestination>(object source) where TDestination : class;
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
var value = source as PlanEntity
正在将来源分配给&#39;值&#39;变量。但是,您稍后会尝试将其强制转换为目标类型 - return (TDestination)value;
这些类型会有所不同,从而导致您的错误。
在第一个代码块中,您需要添加以下内容以使其等效于第二个代码块:
var planModel = new PlanModel() { Id = value.Id };
return (TDestination)planModel;