簡體   English   中英

如何在自動映射器中映射內部類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM