如何将对象映射到列表<;对象>;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; }
}
}