2011-12-12 89 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 }; 
}); 
相关问题