2

これが以前に尋ねられた場合は申し訳ありませんが、質問する具体的な用語はわかりません。

簡単な例:

public class SignOffDetails
{
    public int fUserID {get; set;}
    public DateTime SignedAt {get; set;}
}

public class User
{
    public int UserID {get; set;}
    public string FullName {get; set;}
    public Image Signature {get; set;}
}

public class MdlsCombined
{
    public int UserID {get; set;}
    public string FullName {get; set;}
    public Image Signature {get; set;} 
}

public void Program 
{

    Mapper.CreateMap<SignOffDetails, MdlsCombined>()
        .ForMember(m => m.UserID, y => y.MapFrom(z => z.fUserID));
    // Awesome
}

それらを個別にマッピングできることはわかっていますが、まだ発見していない次のことを行う機能はありますか?

Mapper.CreateMap<SignOffDetails, MdlsCombined>()
    .Let(z => (User)Users.GetUser(z.fUserID))
    .ForMember(m => m.UserID, y => y.MapFrom(z => z.fUserID))
    .ForMember(m => m.FullName, y => y.MapFromLet(l => ((User)l).FullName))
    .ForMember(m => m.Signature, y => y.MapFromLet(l => ((User)l).Signature));

これは非常にばかげており、そもそも手続き型プログラミングの要点全体が取り除かれていることはわかっていますが、それでも合法的な使用法です。

実際の解決策は、SignOffDetails > MdlsCombined と User > MdlsCombined からの 2 つのマップを用意することですが、流暢ではありません;)

4

0 に答える 0