0

我不是英语母语,如果已经有重复的问题,我深表歉意。

我有一个请求类:

class input {
  Car mainCar,
  List<Car> otherCars
}

映射成:

class mapped {
  List<CarDTO> cars
}

使用选项,例如从 mainCar 映射时设置 carType=EnumCarType.Main,否则为 EnumCarType.Other。

这适用于 Automapper 5 吗?

4

1 回答 1

2

这段代码应该可以帮助您入门,尽管在某些细节上有些模糊,而且我这里没有编译器:它做出了合理的假设并使用了自定义类型转换器。注册后,每当您从输入对象映射到映射对象时,它都会用于执行实际转换。

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);
于 2016-08-23T00:10:20.577 回答