我有一个像这样的扁平域类:
public class ProductDomain
{
public int ID { get; set; }
public string Manufacturer { get; set; }
public string Model { get; set; }
public string Description { get; set; }
public string Price { get; set; }
}
我有两个像这样的DTO课程:
public class ProductInfoDTO
{
public int ID { get; set; }
public string Manufacturer { get; set; }
public string Model{ get; set; }
}
public class ProductDTO : ProductInfoDTO
{
public string Description { get; set; }
public string Price { get; set; }
}
现在的问题是:
场景#1:
Mapper.CreateMap<ProductDomain, ProductInfoDTO>() // this mapping works fine
场景#2:
Mapper.CreateMap<ProductDomain, ProductDTO>() // this mapping is not working and throws System.TypeInitializationException
所以我的问题是如何在不破坏源类和目标类的定义的情况下在ProductDomain和ProductDTO(继承ProductInfoDTO)之间创建映射。另外,我不想为域类ProductDomain引入任何新的继承。
由于
答案 0 :(得分:0)
您可以像这样构建自己的自定义TypeConverter
public class ProductDomainToProductDTOConverter : ITypeConverter<ProductDomain, ProductDTO>
{
public ProductDTO Convert(ProductDomain source)
{
ProductDTO product = new ProductDTO();
product.Price = source.Price;
...
return product;
}
}
然后使用您的自定义TypeConverter创建一个地图
Mapper.CreateMap<ProductDomain, ProductDTO>().ConvertUsing<ProductDomainToProductDTOConverter>();