我想映射类(实体),
public class Source {
public int x;
public string y;
public bool z;
public int a;
public int b;
public int c;
//bunch of other fields
//...
//..
//.
}
到以下类(View Model):
public class Destination {
public MyClass1 A;
public MyClass2 B;
}
其中MyClass1,MyClass2的定义如下:
public class MyClass1 {
public int x;
public string y;
public bool z;
}
public class MyClass2 {
public int a;
public int b;
public int c;
}
Automapper可以实现吗?
答案 0 :(得分:7)
刚试过这个,它就是孤立地运作......
Mapper.CreateMap<Source, MyClass1>();
Mapper.CreateMap<Source, MyClass2>();
Mapper.CreateMap<Source, Destination>()
.ForMember(x => x.A, m => m.MapFrom(p => p))
.ForMember(x => x.B, m => m.MapFrom(p => p));
var source = new Source() { a = 1, b = 2, c = 3, x = 4, y = "test", z = true };
var destination = new Destination() { A = new MyClass1(), B = new MyClass2() };
Mapper.Map<Source, Destination>(source, destination);
答案 1 :(得分:1)
Automapper处理展平automatically,这似乎是你在这里所要求的。然而,它与通常的方式相反,所以它可能会窒息。如果是,则可以使用单独的.ForMember()
映射来处理它。
在您的情况下,它看起来如下所示:
Mapper.CreateMap<Source, Destination>()
.ForMember(cv => cv.Destination, m => m.MapFrom(
s => new Class1(s.x, s.y, s.z))
我没有能力在这个环境中运行这个,所以请指出任何语法错误,我会纠正它们。