3

AutoMapper についてまったく初心者の質問です。

従業員モデル オブジェクト。

public class Employee {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public decimal HourlyRate { get; set; }
    public List<string> EmailAddresses { get; set; }
}

Dto オブジェクト:

public class UpdateEmployeeDetailsDto {
    public decimal HourlyRate { get; set; }
    public string EmailAddress1 { get; set; }
    public string EmailAddress2 { get; set; }
}

DTO を Employee オブジェクトにマップし、EmailAddress1 と EmailAddress2 をリストに変換したいと考えています。

私はグーグルとSOでこのタイプのものを検索しましたが、私が見つけた例は、それらを動作するコードに変換できませんでした.

何か助けはありますか?

4

2 に答える 2

3

カスタムマッピングを提供するために使用AfterMapします(あなたのケースではプロパティからリストを作成します):

Mapper.CreateMap<UpdateEmployeeDetailsDto, Employee>()
      .AfterMap((dto, e) => e.EmailAddresses = new List<string>() {
          dto.EmailAddress1,
          dto.EmailAddress2
      });
于 2013-01-14T16:54:14.357 に答える
2

@lazyberezovsky の言うこととは別に、カスタム リゾルバーを作成することもできます。

 public class CustomResolver : ValueResolver<UpdateEmployeeDetailsDto, List<string>>
  {
    protected override List<string> ResolveCore(UpdateEmployeeDetailsDto source)
    {
        return new List<string> { source.EmailAddress1, source.EmailAddress2 }
    }
  }

Mapper.CreateMap<UpdateEmployeeDetailsDto, Employee>()
  .ForMember(dest => dest.EmailAddresses, opt => opt.ResolveUsing<CustomResolver>());

ポイントは何ですか?より一般的なものにして、これを使用してケースを解決できますValue1, Value2, Value3...ValueNにマップされますList<ValueType> Values

于 2013-01-14T17:05:04.623 に答える