我正在开发一个相当大的Asp.net MVC3项目,并希望使用Automapper来解决以下问题。
在数据库中,电话号码存储为10位十进制数字。在用户屏幕上,显示&编辑为“(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 :(得分: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 };
});