2

私は最近オートマッパーをかなりうまく使用していますが、DestをSrcで使用できない変数にマッピングする際に小さな問題に遭遇しました....例はそれをよりよく説明しています..基本的に私はdestからsrcに指示..すべてうまくいきますが、宛先を、ORDERの一部ではないローカル変数であるreservationNumberという名前の変数にマップする必要があります...誰もがこれを行う方法を知っていますか??

予約は私のlinq2sqlクラスであるため、オートマッパーを使用してlinq2sqlで使用するために注文から予約にマップしています。

小さな例ですが、ご意見をいただければ幸いです。

    string reservationNumber = "1234567890"; // this is the local variable.. It will be dynamic in future..

    Mapper.CreateMap<Order, Reservation>()
            .ForMember(dest => dest.ReservationNumber, reservationNumber // THIS OBVIOUSLY FAILS)
            .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.name))
            .ForMember(dest => dest.Surname1, opt => opt.MapFrom(src => src.surname1))
            .ForMember(dest => dest.Surname2, opt => opt.MapFrom(src => src.surname2))
            .ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.email))
            .ForMember(dest => dest.Telephone, opt => opt.MapFrom(src => src.telephone))
     ;
            // Perform mapping
            Reservation reservation = Mapper.Map<Order, Reservation>(order);
4

1 に答える 1

4

これを試して:

Mapper.CreateMap<Order, Reservation>()
    .ForMember(dest => dest.ReservationNumber, opt => opt.MapFrom(src => reservationNumber));

その MapFrom オプションは任意の Func を取ります。他のオプションは、予約番号が既に存在する既存の宛先オブジェクトにマップすることです。または、カスタム サービスなどを使用して予約番号を取得する必要がある場合は、カスタム値リゾルバー (ResolveUsing) を使用します。

CreateMap 呼び出しは、AppDomain ごとに 1 回だけ行う必要があるため、他の 2 つのオプションをチェックして、それらがニーズに合っているかどうかを確認することをお勧めします。

于 2009-08-23T15:32:19.050 に答える