2010-12-02 3 views
3

Моя общедоступная хостинговая компания не позволяет отражать. Как использовать AutoMapper?AutoMapper и отражение

Должен ли я указывать для каждого имущества a .ForMember?

Mapper.CreateMap<Person, PersonData>() 
      .ForMember(dest => dest.Name, o => o.MapFrom(src => src.Name)) 
      .ForMember(dest => dest.Address, o => o.MapFrom(src => src.Address)); 

спасибо,

Filip

ответ

5

Automapper использует reflection.emit, вы уверены, что можете использовать Automapper?

[Редактировать]

не знаю любого, который использует без отражения, даже один я создал XmlDataMapper на CodePlex использует отражение. Было бы сложно спроектировать один без отражения или отражения.

Простейшим и основным способом сделать это было бы это, вы можете использовать любой из двух или обоих методов.

public class ConversionHelper 
{ 
    public static ClassB Convert(ClassA item) 
    { 
     return new ClassB() { Id = item.Id, Name = item.Name }; 
    } 

    public static List<ClassB> Convert(List<ClassA> list) 
    { 
     return list.Select(o => new ClassB() { Id = o.Id, Name = o.Name }).ToList(); 
    } 
} 


public class ClassA 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 
public class ClassB 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

Из образца вы дали, где вы в любом случае пытается сопоставить свойства один за другим, это по той же схеме, но с меньшим кодом.

+0

Это то, что я хочу знать, возможно ли использовать AutoMapper без Reflection? Или вы знаете другой инструмент сопоставления, который не использует это? – Filip 2010-12-02 08:15:07

0

Вовсе нет. AutoMapper проделал отличную работу по интеллектуальному сопоставлению. Если имя свойства вашего исходного и целевого объектов совпадает, AutoMapper автоматически отобразит эти параметры для вас.

+0

Я хочу использовать AutoMapper без Reflection, потому что хостинговая компания не поддерживает Reflection, поэтому я хочу знать, является ли the.formember единственным решением. – Filip 2010-12-02 08:22:39

+0

Ах, извините, я неправильно понял ваш вопрос: -/Я не знаю, есть ли другая возможность использовать AutoMapper без отражения. – Mariusz 2010-12-02 08:44:24

1

Вы не можете использовать Automapper или любую другую архитектуру сопоставления, о которой я знаю без отражения. Это логически очевидно. Как вы могли бы сопоставить два неизвестных объекта друг другу без использования каких-либо отраженных свойств? Единственным вариантом в этом случае является создание настраиваемого пакета для преобразования одного объекта в другой.

Смежные вопросы