我不是英语母语,如果已经有重复的问题,我深表歉意。
我有一个请求类:
class input {
Car mainCar,
List<Car> otherCars
}
映射成:
class mapped {
List<CarDTO> cars
}
使用选项,例如从 mainCar 映射时设置 carType=EnumCarType.Main,否则为 EnumCarType.Other。
这适用于 Automapper 5 吗?
我不是英语母语,如果已经有重复的问题,我深表歉意。
我有一个请求类:
class input {
Car mainCar,
List<Car> otherCars
}
映射成:
class mapped {
List<CarDTO> cars
}
使用选项,例如从 mainCar 映射时设置 carType=EnumCarType.Main,否则为 EnumCarType.Other。
这适用于 Automapper 5 吗?
这段代码应该可以帮助您入门,尽管在某些细节上有些模糊,而且我这里没有编译器:它做出了合理的假设并使用了自定义类型转换器。注册后,每当您从输入对象映射到映射对象时,它都会用于执行实际转换。
public class CarTypeConverter : ITypeConverter<input, mapped>
{
public mapped Convert(ResolutionContext context)
{
// get the input object from the context
input inputCar = (input)context.SourceValue;
// get the main car
CarDTO mappedMainCar = Mapper.Map<Car, CarDTO>(input.mainCar);
mappedMainCar.carType = EnumCarType.Main;
// create a list with the main car, then add the rest
var mappedCars = new List<CarDTO> { mappedMainCar };
mappedCars.AddRange(Mapper.Map<Car, CarDTO>(inputCar.otherCars));
return new mapped { cars = mappedCars };
}
}
// In Automapper initialization
mapperCfg.CreateMap<input, mapped>().ConvertUsing<CarTypeConverter>();
mapperCfg.CreateMap<Car, CarDTO>()
.ForMember(dest => dest.carType, opt => EnumCarType.Other);