2017-08-22 55 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

您需要兩個不同的配置文件,一個配置爲您已經完成,另一個配置已顛倒。

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

是的,我明白,但最好在一個配置文件中有兩個不同的命名配置,因此您不必再次定義這些映射。 – kubo