2017-08-22 12 views
0

私はAutomapper 6.1.1を使用しています。逆マッピングを使用する必要があります。私は2004年からバグ報告を見つけ、閉鎖しました。しかし私の例では機能していませんが、プロパティーc12に値はありません。だから私はこの例で逆マッピングを使うことができますか?AutomapperがNamingConventionによる逆マッピングで動作しない

public class Class1 
{ 
    public string COSI_KDESI { get; set; } 
} 
public class Class2 
{ 
    public string CosiKdesi { get; set; } 
} 
Mapper.Initialize(cfg => 
{ 
    cfg.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention(); 
    cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention(); 
    cfg.CreateMap<Class1, Class2>().ReverseMap(); 
}); 

Class1 c1 = new Class1() { COSI_KDESI = "ttttttt" }; 

Class2 c2 = Mapper.Map<Class2>(c1); 
Class1 c12 = Mapper.Map<Class1>(c2); 

答えて

0

2つの異なるプロファイルが必要です.1つは既に設定したものともう1つを逆にする必要があります。

Mapper.Initialize(cfg => 
{ 
    cfg.CreateProfile("p1", p=> 
    { 
     p.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention(); 
     p.CreateMap<Class1, Class2>(); 
    }); 
    cfg.CreateProfile("p2", p=> 
    { 
     p.DestinationMemberNamingConvention = new LowerUnderscoreNamingConvention(); 
     p.CreateMap<Class2, Class1>(); 
    }); 
}); 
+0

あなたは 'reversmap()'を使うことができないのは残念です。逆マッピングのための別の命名規則を定義することができれば、非常に役に立ちます。 – kubo

+0

逆のマップでは表記規則が異なり、表記規則はプロファイルごとであり、マップが異なるプロファイルになければならないため、これは可能ではないと思います。 –

+0

はい私は理解しますが、1つのプロファイルに2つの異なる名前付け設定を使用し、これらのマップを再度定義する必要はありません。 – kubo

関連する問題