簡體   English   中英

如何 map Object 列出<object> c# 自動映射器<div id="text_translate"><p>任何想法如何 map 單個 object ot 列表? 我有:</p><pre> class AdditionalData: string data1 string data2 string data3 class Person: AdditionalData additionalData string UCN class AdditionalDataDTO: string data1 string data2 string data3 string data4 string data5 class PersonDTO: AdditionalDataDTO additionalData[] string UCN</pre><p> 那么如何將 map AdditionalData 到 List 我希望源成為第一個 object ot 列表我知道如何將 map AdditionalData 到 AdditionalDataDTO</p></div></object>

[英]How to map Object to List<Object> c# Automapper

任何想法如何 map 單個 object ot 列表? 我有:

class AdditionalData:
string data1
string data2
string data3

class Person:
AdditionalData additionalData
string UCN

class AdditionalDataDTO:
string data1
string data2
string data3
string data4
string data5

class PersonDTO:
AdditionalDataDTO additionalData[]
string UCN

那么如何將 map AdditionalData 到 List 我希望源成為第一個 object ot 列表我知道如何將 map AdditionalData 到 AdditionalDataDTO

如果您提供一個完整的代碼示例,其中包含您當前的 state 以及它失敗的地方,那就容易多了。 所以我不得不自己編寫代碼,而不是簡單地從你的問題中復制它。 盡管如此,我還是努力在自己身上設置一切,並找到了解決方案。 ;-)

與 AutoMapper 一樣,缺少的點是.ConvertUsing()的使用和提供ResolutionContext的重載,允許訪問映射器本身以進行遞歸調用:

using AutoMapper;

namespace ConsoleApp
{
    public static class Program
    {
        static void Main(string[] args)
        {
            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap<Person, PersonDTO>();
                cfg.CreateMap<AdditionalData, AdditionalDataDTO>();
                cfg.CreateMap<AdditionalData, AdditionalDataDTO[]>()
                    .ConvertUsing((s, _, context) =>
                    {
                        var single = context.Mapper.Map<AdditionalDataDTO>(s);
                        return new[] { single };
                    });
            });

            var mapper = config.CreateMapper();

            var source = new Person
            {
                UCN = "MyName",
                AdditionalData = new AdditionalData
                {
                    Data1 = "First",
                    Data2 = "Second",
                    Data3 = "Third",
                }
            };

            var dest = mapper.Map<PersonDTO>(source);
        }
    }

    public class AdditionalData
    {
        public string Data1 { get; set; }
        public string Data2 { get; set; }
        public string Data3 { get; set; }
    }

    public class Person
    {
        public string UCN { get; set; }
        public AdditionalData AdditionalData { get; set; }
    }

    public class AdditionalDataDTO
    {
        public string Data1 { get; set; }
        public string Data2 { get; set; }
        public string Data3 { get; set; }
        public string Data4 { get; set; }
        public string Data5 { get; set; }
    }

    public class PersonDTO
    {
        public string UCN { get; set; }
        public AdditionalDataDTO[] AdditionalData { get; set; }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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