今天我升级使用AutoMapper 1.1版到现在使用AutoMapper V2.1全功能的应用程序,我对面,我用以前的版本从未遇到过的一些问题来了。
这是我的代码映射的示例从DTO回域对象
public class TypeOne
{
public TypeOne()
{
}
public TypeOne(TypeTwo two)
{
//throw ex if two is null
}
public TypeOne(TypeTwo two, TypeThree three)
{
//throw ex if two or three are null
}
public TypeTwo Two {get; private set;}
public TypeThree Three {get; private set;}
}
public class TypeOneDto
{
public TypeOneDto()
{
}
public TypeTwoDto Two {get; set;}
public TypeThreeDto Three {get; set;}
}
...
Mapper.CreateMap<TypeThreeDto, TypeThree>();
Mapper.CreateMap<TypeTwoDto, TypeTwo>();
Mapper.CreateMap<TypeOneDto, TypeOne>();
var typeOne = Mapper.Map<TypeOne>(typeOneDto);
不过,我与V2.1遇到的第一个问题是,AutoMapper试图用2个ARGS构造时,args来一个为空,应使用1个参数的构造函数。
然后我试图使用
Mapper.CreateMap<TypeOneDto, TypeOne>().ConstructUsing(x => new TypeOne());
但我一直得到我解决不了的“暧昧调用”的错误。
然后,我尝试
Mapper.CreateMap<TypeOneDto, TypeOne>().ConvertUsing(x => new TypeOne());
而且也成功地创建使用参数的构造函数的TypeOne对象,但随后没有设置专用setter属性。
我已经看过了AutoMapper网站上的帮助和下载的源代码有一个良好的外观,但没有提供有关文档很少得到远没有许多单元测试ConstructUsing。
有什么明显我很想念我应该用V2.1改变? 我很惊讶,它已经改变了从V1.1这么多。