簡體   English   中英

Automapper DynamicMap無法映射匿名類型的列表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM