2

多数のプロパティを持つオブジェクトがいくつかあります。AutoMapper を使い始めたとき、ネストされたオブジェクトをいくつかマッピングして、その仕組みを理解しようとしました。ソースと宛先で同じ名前のプロパティにマップされるといつも思っていました。ただし、 ForMember() ルールをいくつか取得すると、ルールがあるプロパティのみをマップするようです。

ソース オブジェクトと宛先オブジェクトが異なるいくつかのルールのみを指定する方法はありますか? それとも、すべてのプロパティを明示的にマップする必要がありますか?

Mapper.CreateMap<MessageWireFormat, Message>()
    .ForMember(dest => dest.PlainBody, opt => opt.MapFrom(src => src.Body.Plain))
    .ForMember(dest => dest.ParsedBody, opt => opt.MapFrom(src => src.Body.Parsed))
    .ForMember(dest => dest.RichBody, opt => opt.MapFrom(src => src.Body.Rich))
    .ForMember(dest => dest.Excerpt, opt => opt.MapFrom(src => src.ContentExcerpt))
    .ForMember(dest => dest.AttachmentCount, opt => opt.MapFrom(src => src.Attachments.Length))
    .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
    .ForMember(dest => dest.Url, opt => opt.MapFrom(src => src.Url))
    .ForMember(dest => dest.WebUrl, opt => opt.MapFrom(src => src.WebUrl))
    .ForMember(dest => dest.NetworkId, opt => opt.MapFrom(src => src.NetworkId))
    .ForMember(dest => dest.GroupId, opt => opt.MapFrom(src => src.GroupId))
    .ForMember(dest => dest.SystemMessage, opt => opt.MapFrom(src => src.SystemMessage))
    .ForMember(dest => dest.Privacy, opt => opt.MapFrom(src => src.Privacy))
    .ForMember(dest => dest.DirectMessage, opt => opt.MapFrom(src => src.DirectMessage))
    .ForMember(dest => dest.SenderType, opt => opt.MapFrom(src => src.SenderType))
    .ForMember(dest => dest.SenderId, opt => opt.MapFrom(src => src.SenderId))
    .ForMember(dest => dest.CreatedAt, opt => opt.MapFrom(src => src.CreatedAt))
    .ForMember(dest => dest.ClientType, opt => opt.MapFrom(src => src.ClientType))
    .ForMember(dest => dest.ClientUrl, opt => opt.MapFrom(src => src.ClientUrl))
    .ForMember(dest => dest.RepliedToId, opt => opt.MapFrom(src => src.RepliedToId))
    .ForMember(dest => dest.Language, opt => opt.MapFrom(src => src.Language));
4

1 に答える 1

2

ホーリーモリー。これらのマッピングのほとんどすべては不要です。MapFrom は、名前が一致する場合ではなく、名前が一致しない場合にのみ使用されますそれらが一致しない場合でも、「Body.Plain」と一致しない「PlainBody」の代わりに、構成なしでマップされる「BodyPlain」を持たないための本当に正当な理由が必要です。

于 2013-10-16T13:13:09.450 に答える