АвтоМаппер с префиксом
Я пытаюсь использовать Automapper для сопоставления с объектами, проблема заключается в том, что один из объектов, которые я пытаюсь отобразить, имеет префикс "Cust_" перед всеми его свойствами, а один - нет. Есть ли способ сделать это отображение.
Например, у меня есть
class A
{
String FirstName { get; set; }
String LastName { get; set; }
}
class B
{
String Cust_FirstName { get; set; }
String Cust_LastName { get; set; }
}
Очевидно, эта карта не будет работать
AutoMapper.Mapper.CreateMap<A, B>();
b = AutoMapper.Mapper.Map<A, B>(a);
2 ответа
Mapper.Initialize(cfg =>
{
cfg.RecognizeDestinationPrefixes("Cust_");
cfg.CreateMap<A, B>();
});
A a = new A() {FirstName = "Cliff", LastName = "Mayson"};
B b = Mapper.Map<A, B>(a);
//b.Cust_FirstName is "Cliff"
//b.Cust_LastName is "Mayson"
Или в качестве альтернативы:
Mapper.Configuration.RecognizeDestinationPrefixes("Cust_");
Mapper.CreateMap<A, B>();
...
B b = Mapper.Map<A, B>(a);
...
В документации есть статья о распознавании пре / постфиксов
Иногда ваши исходные / конечные свойства будут иметь общие префиксы / постфиксы, которые заставляют вас делать кучу пользовательских сопоставлений элементов, потому что имена не совпадают. Для решения этой проблемы вы можете распознать пре / постфиксы:
public class Source {
public int frmValue { get; set; }
public int frmValue2 { get; set; }
}
public class Dest {
public int Value { get; set; }
public int Value2 { get; set; }
}
Mapper.Initialize(cfg => {
cfg.RecognizePrefix("frm");
cfg.CreateMap<Source, Dest>();
});
Mapper.AssertConfigurationIsValid (); По умолчанию AutoMapper распознает префикс "Get", если вам нужно очистить префикс:
Mapper.Initialize(cfg => {
cfg.ClearPrefixes();
cfg.RecognizePrefixes("tmp");
});