[英]How to map inner classes in automapper
我正在嘗試使用automapper在內部類中傳輸字符串的信息。 如何獲得D的值? 我的第一次嘗試是:
C = new C { D = "123"}
這在dotnetfiddle中失敗了,那么正確的方法是什么?
甚至有可能將內部類映射到另一個對象,還是有必要更改映射以使其起作用?
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);
}
}
這里沒有地圖可以映射。 您有嵌套的類聲明 。 這不是數據。 您應該具有嵌套類類型的字段或屬性:
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"
}
}
進一步閱讀: 嵌套類型最佳實踐
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.