我的共享托管公司不允许反射。
如何使用 AutoMapper?

我是否必须为每个属性指定一个 .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));

谢谢,

菲利普

最佳答案

Automapper 使用 reflection.emit ,您确定可以使用 Automapper 吗?

[编辑]

不知道有没有不使用反射的,即使是我在 CodePlex 上创建的 XmlDataMapper 也使用反射。没有反射或reflection.emit就很难设计一个

执行此操作的最简单和基本的方法是,您可以使用这两种或两种技术中的任何一种。

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; }
}

从您给出的示例中,您无论如何都试图一一映射属性,这是在同一行上,但代码较少。

关于reflection - AutoMapper 和反射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4332554/

10-13 07:59