[英]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.