如何将对象映射到列表<;对象>;c#自动制版机

如何将对象映射到列表<;对象>;c#自动制版机,c#,dictionary,automapper,C#,Dictionary,Automapper,你知道如何映射一个对象列表吗? 我有: 那么,如何将附加数据映射到列表 我希望源成为列表中的第一个对象 我知道如何将AdditionalData映射到AdditionalDataDTO如果您能提供一个完整的代码示例,其中包含您的当前状态以及失败的位置,那将更加容易。因此,我不得不自己编写代码,而不是简单地从你的问题中复制代码。尽管如此,我还是努力把一切都安排在自己身上,并找到了解决办法。;-) 与AutoMapper一样,缺少的一点是使用.ConvertUsing()和重载,该重载提供了一个Re

你知道如何映射一个对象列表吗? 我有:

那么,如何将附加数据映射到列表 我希望源成为列表中的第一个对象
我知道如何将AdditionalData映射到AdditionalDataDTO

如果您能提供一个完整的代码示例,其中包含您的当前状态以及失败的位置,那将更加容易。因此,我不得不自己编写代码,而不是简单地从你的问题中复制代码。尽管如此,我还是努力把一切都安排在自己身上,并找到了解决办法。;-)

与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; }
    }
}
使用AutoMapper;
名称空间控制台
{
公共静态类程序
{
静态void Main(字符串[]参数)
{
var config=new-MapperConfiguration(cfg=>
{
CreateMap();
CreateMap();
cfg.CreateMap()
.ConvertUsing((s,u,context)=>
{
var single=context.Mapper.Map;
返回新的[]{single};
});
});
var mapper=config.CreateMapper();
var来源=新人员
{
UCN=“MyName”,
AdditionalData=新的AdditionalData
{
Data1=“第一”,
Data2=“秒”,
Data3=“第三”,
}
};
var dest=mapper.Map(源);
}
}
公共类附加数据
{
公共字符串Data1{get;set;}
公共字符串Data2{get;set;}
公共字符串Data3{get;set;}
}
公共阶层人士
{
公共字符串UCN{get;set;}
公共附加数据附加数据{get;set;}
}
公共类AdditionalDataDTO
{
公共字符串Data1{get;set;}
公共字符串Data2{get;set;}
公共字符串Data3{get;set;}
公共字符串Data4{get;set;}
公共字符串Data5{get;set;}
}
公共类个人
{
公共字符串UCN{get;set;}
public AdditionalDataDTO[]AdditionalData{get;set;}
}
}

下次我会更明确的承诺:)谢谢你的努力和快速回答。
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; }
    }
}