5

いくつかのオブジェクトを自動マップしようとしています。
ソース オブジェクトには名前の前に _ が付いたプロパティがありますが、宛先オブジェクトにはありません。オートマッパーがすべての _properties を
すべてのソースタイプのプロパティにマップする 1 つのマップ作成を実装することは可能ですか?

class MyMapper<TFrom, TTo>{
    TTo PerformMap(TFrom fromObject){
        Mapper.CreateMap<From, To>(); // ???
        TTo result = Mapper.Map<From, To>(fromObject);
        //result.Id.ShouldBe(value from TFrom._Id);
        return result;
    }
}

class From
{
    public int _Id { get; set; }
    public string _Name { get; set; }
}

class To
{
    public int Id { get; set; }
    public string Name { get; set; }
}
4

3 に答える 3

9

最近 AutoMapper に追加したもの、つまりカスタム命名規則が役立つかもしれません。トランク (R107) を調べる場合は、INamingConvention を探してください。現在、私は 2 つの命名規則 (PascalCase と lower_case_underscore) を使用していますが、実際には適切な RegEx を見つけて作業を開始するだけです。

INamingConvention.cs

現在、命名規則はグローバルでプロファイル スコープです。この機能は新しいため、テスト以外のドキュメントはありません。

于 2009-08-01T22:25:08.133 に答える
0

このために、この特定のケースを解決するためにカスタムマッピングを追加できます。

Mapper.CreateMap<From, To>()
   .ForMember( dest => dest.Id, opt => opt.MapFrom( src => src._Id ) )
   .ForMember( dest => dest.Name, opt => opt.MapFrom( src => src._Name ) );
于 2009-04-27T01:33:39.907 に答える