Automapper式はトップレベルのメンバーに解決される必要があります質問する

Automapper式はトップレベルのメンバーに解決される必要があります質問する

ソース オブジェクトと宛先オブジェクトをマップするために automapper を使用しています。マップ中に以下のエラーが発生します。

式は最上位メンバーに解決される必要があります。パラメータ名: lambdaExpression

問題を解決できません。

ソースオブジェクトと宛先オブジェクトは次のとおりです。

public partial class Source
{
        private Car[] cars;

        public Car[] Cars
        {
            get { return this.cars; }
            set { this.cars = value; }
        }
}

public partial class Destination
{
        private OutputData output;

        public OutputData Output
        {            
            get {  return this.output; }
            set {  this.output= value; }
        }
}

public class OutputData
{
        private List<Cars> cars;

        public Car[] Cars
        {
            get { return this.cars; }
            set { this.cars = value; }
        }
}

Source.Carsオブジェクトにマッピングする必要がありますDestination.OutputData.Cars。これについて助けていただけませんか?

ベストアンサー1

使用しているもの:

 Mapper.CreateMap<Source, Destination>()
 .ForMember( dest => dest.OutputData.Cars, 
             input => input.MapFrom(i => i.Cars)); 

dest ラムダで 2 レベルを使用しているため、これは機能しません。

Automapper では、1 つのレベルにしかマップできません。この問題を解決するには、単一のレベルを使用する必要があります。

 Mapper.CreateMap<Source, Destination>()
 .ForMember( dest => dest.OutputData, 
             input => input.MapFrom(i => new OutputData{Cars=i.Cars})); 

こうすることで、車を目的地まで向かわせることができます。

おすすめ記事