繁体   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