我正在从事一个相当大的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将所有数据从数据库实体模型移动到显示视图模型。
我知道我不能从string继承。
然而,如果我可以使用Automapper完成这个格式转换,它将节省我大量的工作和重复的代码。
发布于 2011-12-13 02:16:43
您可以使用组合而不是继承-只需在自定义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 };
});
https://stackoverflow.com/questions/8478734
复制相似问题