0

私はネイティブの英語ではないので、すでに重複した質問がある場合は申し訳ありません.

私はリクエストクラスを持っています:

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

次の場所にマップされます:

class mapped {
  List<CarDTO> cars
}

mainCar set 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 に答える