Automapper Конвертеры пользовательских типов с пользовательскими типами на основе строки - PullRequest
0 голосов
/ 12 декабря 2011

Я работаю над довольно крупным проектом Asp.net MVC3 и хотел бы использовать 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, это сэкономит мне много работы и дублирует код.

1 Ответ

0 голосов
/ 12 декабря 2011

Вы можете использовать композицию вместо наследования - просто используйте строковое свойство в пользовательском 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 };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...