我试图用automapper在内部类中传输字符串的信息。怎样才能得到D的值?我的第一次尝试是:
C = new C { D = "123"}这在网络小提琴中失败了,那么什么才是正确的方法呢?
是否可以将内部类映射到另一个对象,或者是否有必要更改映射以使其正常工作?
using System;
using AutoMapper;
public class Foo
{
public string A { get; set; }
public int B { get; set; }
public class C
{
public string D {get;set;}
}
}
public class Bar
{
public string A { get; set; }
public int B { get; set; }
public class C
{
public string D {get;set;}
}
}
public class Program
{
public static void Main()
{
Mapper.CreateMap<Foo,Bar>();
var foo = new Foo { A="test", B=100500}; //how to get c/d?
var bar = Mapper.Map<Bar>(foo);
Console.WriteLine("foo type is {0}", foo.GetType());
Console.WriteLine("bar type is {0}", bar.GetType());
Console.WriteLine("foo.A={0} foo.B={1}", foo.A, foo.B);
Console.WriteLine("bar.A={0} bar.B={1}", bar.A, bar.B);
}
}发布于 2017-04-28 10:51:27
这里没什么可描绘的。您有嵌套类声明。这不是数据。您应该具有嵌套类类型的字段或属性:
public class Foo
{
public string A { get; set; }
public int B { get; set; }
public C Value { get; set; } // add same to Bar class
public class C
{
public string D { get; set; }
}
}接下来,需要在嵌套类之间进行映射:
Mapper.CreateMap<Foo.C,Bar.C>();和地图数据:
var foo = new Foo { A ="test", B = 100500, Value = new Foo.C { D = "foo" }};制图:
var bar = Mapper.Map<Bar>(foo);在映射bar对象之后,它将具有以下值:
{
"A": "test",
"B": 100500,
"Value": {
"D": "foo"
}
}进一步阅读:嵌套类型最佳实践
https://stackoverflow.com/questions/43678329
复制相似问题