AutoMapper 双重失败
AutoMapper failing on on double
我有以下类
public class EstimationDTO
{
public EstimationDTO() { }
public EstimationDTO(double best, double mostLikely, double worst)
{
this.BestEffort = best;
this.MostLikelyEffort = mostLikely;
this.WorstEffort = worst;
}
public double BestEffort { get; set; }
public double MostLikelyEffort { get; set; }
public double WorstEffort { get; set; }
}
public class Estimation
{
public Estimation() { }
public Estimation(double best, double mostLikely, double worst)
{
this.BestEffort = best;
this.MostLikelyEffort = mostLikely;
this.WorstEffort = worst;
}
public double BestEffort { get; set; }
public double MostLikelyEffort { get; set; }
public double WorstEffort { get; set; }
}
我有以下 AutoMapper 配置
Mapper.CreateMap<EstimationDTO, Estimation>();
Mapper.CreateMap<Estimation, EstimationDTO>();
当我尝试在两者之间进行转换时,即
var x = Mapper.Map<EstimationDTO>(new Estimation{ BestEffort = 0.1, MostLikelyEffort = 0.2, WorstEffort = 0.3 });
automapper 抛出以下错误:
AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.
Mapping types:
Estimation -> Double
(请注意,如果我尝试反向转换,它会抛出相同的错误)。
我尝试对属性进行显式映射,但这并没有解决问题。
如果我指定双重转换
Mapper.CreateMap<EstimationDTO, double>();
Mapper.CreateMap<Estimation, double>();
它可以正常工作并在两种类型之间正确转换。
为什么我必须为 类 指定此特定转换?
使用构造函数参数时,您需要创建显式映射,以 .ConstructUsing()
概述这些构造函数参数(此示例在版本 4.0.4 中)。
void Main()
{
Mapper.CreateMap<EstimationDTO, Estimation>()
.ConstructUsing(
(Func<EstimationDTO, Estimation>)(x => new Estimation(0.1, 0.2, 0.3)));
Mapper.CreateMap<Estimation, EstimationDTO>()
.ConstructUsing(
(Func<Estimation, EstimationDTO>)(x => new EstimationDTO(0.1, 0.2, 0.3)));
var mapped = Mapper.Map<EstimationDTO>(
new Estimation{ BestEffort = 0.1, MostLikelyEffort = 0.2, WorstEffort = 0.3 });
mapped.Dump();
}
我有以下类
public class EstimationDTO
{
public EstimationDTO() { }
public EstimationDTO(double best, double mostLikely, double worst)
{
this.BestEffort = best;
this.MostLikelyEffort = mostLikely;
this.WorstEffort = worst;
}
public double BestEffort { get; set; }
public double MostLikelyEffort { get; set; }
public double WorstEffort { get; set; }
}
public class Estimation
{
public Estimation() { }
public Estimation(double best, double mostLikely, double worst)
{
this.BestEffort = best;
this.MostLikelyEffort = mostLikely;
this.WorstEffort = worst;
}
public double BestEffort { get; set; }
public double MostLikelyEffort { get; set; }
public double WorstEffort { get; set; }
}
我有以下 AutoMapper 配置
Mapper.CreateMap<EstimationDTO, Estimation>();
Mapper.CreateMap<Estimation, EstimationDTO>();
当我尝试在两者之间进行转换时,即
var x = Mapper.Map<EstimationDTO>(new Estimation{ BestEffort = 0.1, MostLikelyEffort = 0.2, WorstEffort = 0.3 });
automapper 抛出以下错误:
AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.
Mapping types:
Estimation -> Double
(请注意,如果我尝试反向转换,它会抛出相同的错误)。
我尝试对属性进行显式映射,但这并没有解决问题。
如果我指定双重转换
Mapper.CreateMap<EstimationDTO, double>();
Mapper.CreateMap<Estimation, double>();
它可以正常工作并在两种类型之间正确转换。
为什么我必须为 类 指定此特定转换?
使用构造函数参数时,您需要创建显式映射,以 .ConstructUsing()
概述这些构造函数参数(此示例在版本 4.0.4 中)。
void Main()
{
Mapper.CreateMap<EstimationDTO, Estimation>()
.ConstructUsing(
(Func<EstimationDTO, Estimation>)(x => new Estimation(0.1, 0.2, 0.3)));
Mapper.CreateMap<Estimation, EstimationDTO>()
.ConstructUsing(
(Func<Estimation, EstimationDTO>)(x => new EstimationDTO(0.1, 0.2, 0.3)));
var mapped = Mapper.Map<EstimationDTO>(
new Estimation{ BestEffort = 0.1, MostLikelyEffort = 0.2, WorstEffort = 0.3 });
mapped.Dump();
}