2011-12-12 51 views
0

我正在處理一個相當大的Asp.net MVC3項目,並且想使用Automapper解決以下問題。Automapper基於字符串的自定義類型的自定義類型轉換器

在數據庫中,電話號碼存儲爲十位十進制數字。在用戶屏幕上,它們顯示爲編輯爲「(xxx)yyy-zzzz」的&。

我想要做的是創建一個自定義類型轉換器,它看起來像如下 -

public class phoneNumber //display data type 
       inherits string; 

public class getdata(){ 
     Mapper.CreateMap<decimal, phoneNumber>().ConvertUsing(decimal2Phone); 
     Mapper.CreateMap<phoneNumber, decimal>().ConvertUsing(phone2Decimal); 

     Mapper.CreateMap<dbRecordTYpe, displayRecordType>(); 
     Mapper.CreateMap<displayRecordType, dbRecordTYpe>(); 
} 

凡使用類似於在https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters。我們使用Automapper將數據庫實體模型中的所有數據移動到顯示視圖模型。

我知道我不能從字符串繼承。

但是,如果我可以使用Automapper進行這種格式轉換,它將爲我節省很多工作量和重複代碼。

回答

0

您可以使用組成,而不是繼承 - 只需使用一個字符串屬性在自定義PhoneNumber類,並使用在映射該屬性:

class PhoneNumber 
{ 
    public string Number {get;set;} 
} 

... 
Mapper.CreateMap<decimal, PhoneNumber>().ConvertUsing(num => 
{ 
    //do custom conversion of decimal to string here, ToString() just example 
    string s = num.ToString(); 
    return new PhoneNumber() { Number = s }; 
});