首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有基于字符串的自定义类型的Automapper自定义类型转换器

具有基于字符串的自定义类型的Automapper自定义类型转换器
EN

Stack Overflow用户
提问于 2011-12-13 02:04:47
回答 1查看 2.1K关注 0票数 0

我正在从事一个相当大的Asp.net MVC3项目,并希望使用Automapper来解决以下问题。

在数据库中,电话号码存储为10位十进制数字。在用户屏幕上,它们被显示和编辑为"(xxx) yyy-zzzz“。

我想要做的是创建一个自定义类型转换器,如下所示-

代码语言:javascript
运行
复制
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完成这个格式转换,它将节省我大量的工作和重复的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-13 02:16:43

您可以使用组合而不是继承-只需在自定义PhoneNumber类中使用字符串属性,并在映射中使用该属性:

代码语言:javascript
运行
复制
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 };
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8478734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档