[英]C# AutoMapper Array to a List
我已经阅读了将数组自动映射到列表,但是实际上这是列表到数组,我确实希望数组到列表。 这是我的代码:
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
namespace PocArrayListMap
{
class Destination
{
public List<string> list = new List<string>();
}
class Origin
{
public string[] array;
}
class Program
{
static void Main(string[] args)
{
Mapper.Initialize(cfg => cfg.CreateMap<Origin, Destination>().ForMember(e => e.list, opts => opts.MapFrom(s => s.array.ToList())));
var config = new MapperConfiguration(cfg => cfg.CreateMap<Origin, Destination>());
config.AssertConfigurationIsValid(); // Exception here
var o = new Origin() { array = new string[] { "one", "two", "three" } };
var d = Mapper.Map<Destination>(o);
Console.WriteLine(string.Join(", ", d.list));
}
}
}
这是异常消息:
来源->目的地(目的地成员列表)
PocArrayListMap.Origin-> PocArrayListMap.Destination(目标成员列表)
未映射的属性:
名单
使用Automapper(6.2.2)和.Net 4.6.2的最新版本。并非与平台或版本相关。
如此处所述编辑 , https: //stackoverflow.com/a/5591125/169714 automapper应该自动执行列表和数组内容。 但是我一直在获取未映射的属性。 即使我有ForMember
方法。
我尝试了此代码(使用Automapper 6.2.2),它在我的身边工作:
class Program
{
static void Main(string[] args)
{
Mapper.Initialize(cfg => cfg.CreateMap<Origin, Destination>().ForMember(e => e.list, opts => opts.MapFrom(s => s.array.ToList())));
Mapper.AssertConfigurationIsValid();
Origin o = new Origin {array = new[] {"one", "two", "three"}};
Destination d = Mapper.Map<Destination>(o);
Console.WriteLine(string.Join(", ", d.list));
}
}
您的清单中是否包含任何物品? 因为我看不到是否为它分配了值,所以从我的角度来看,您的列表为空...
在该线程中,评论之一是:“现在5.0.1出来了,我必须将其更改为CreateMap(MemberList.None),否则我将得到错误”。
希望我能帮上忙!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.