[英]Automapper DynamicMap failing to map Lists of anonymous types
我有以下代碼片段。
var files = query.ToList();
var testFile = Mapper.DynamicMap<EftFileDto>(files.First());
var filesDto = Mapper.DynamicMap<List<EftFileDto>>(files);
testFile
具有正確映射的值,但filesDto為空。
看來dynamicMap適用於單個項目,但不適用於列表?
files
是匿名對象的列表。
編輯 :如果我使用數組也不起作用。 我可以讓它工作,但......
var filesDto = query.Select(Mapper.DynamicMap<EftFileDto>).ToList();
在大多數映射方案中,我們知道我們在編譯時映射到的類型。 在某些情況下,直到運行時才知道源類型,尤其是在我使用動態類型或可擴展性場景的情況下。
DynamicMap調用為傳入指定目標類型的源對象的類型創建配置。 如果已經映射了兩種類型,AutoMapper將跳過此步驟(因為我可以為此示例多次調用DynamicMap)。
資料來源: http : //lostechies.com/jimmybogard/2009/04/15/automapper-feature-interfaces-and-dynamic-mapping/
更短的版本: DynamicMap與調用CreateMap然后調用Map相同。
一些虛擬人類
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
}
假設你有一份人員名單。
var persons = new List<Person>();
for (int i = 0; i < 100; i++)
{
persons.Add(new Person {
Name = String.Format("John {0}", i),
Surname = String.Format("Smith {0}", i),
Age = i });
}
然后,您可以選擇添加新房產的人員。
var anonymousTypes = persons.Select(p => new {
p.Name,
p.Surname,
FullName = String.Format("{0}, {1}", p.Surname,p.Name) }).ToList();
要正確映射第一個人
var testFile = Mapper.DynamicMap<Person>(anonymousTypes.First());
要正確映射您將使用的所有人
var testFiles = anonymousTypes.Select(Mapper.DynamicMap<Person>).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.