2017-03-09 9 views
0

Ich brauche Hilfe, um ein anonymes Objekt mit Automapper abzubilden. Das Ziel ist die Kombination von Produkt und Einheit in einem ProductDto (in dem Einheit die Eigenschaft eines Produkts ist).Automapper: map einen anonymen/dynamischen Typ

Autommaper CreateMissingTypeMaps Konfiguration ist auf true eingestellt.

Meine Klassen:

public class Product 
{ 
    public int Id { get; set; } 
} 

public class Unity 
{ 
    public int Id { get; set; } 
} 

public class ProductDto 
{ 
    public int Id { get; set; } 
    public UnityDto Unity{ get; set; } 
} 

public class UnityDto 
{ 
    public int Id { get; set; } 
} 

Testcode

Product p = new Product() { Id = 1 }; 
Unity u = new Unity() { Id = 999 }; 
var a = new { Product = p, Unity = u }; 

var t1 = Mapper.Map<ProductDto>(a.Product); 
var t2 = Mapper.Map<UnityDto>(a.Unity); 
var t3 = Mapper.Map<ProductDto>(a); 

Console.WriteLine(string.Format("ProductId: {0}", t1.Id)); // Print 1 
Console.WriteLine(string.Format("UnityId: {0}", t2.Id)); // Print 999 
Console.WriteLine(string.Format("Anonymous ProductId: {0}", t3.Id)); // Print 0 <<< ERROR: It should be 1 >>> 
Console.WriteLine(string.Format("Anonymous UnityId: {0}", t3.Unity.Id)); // Print 999 

Es gibt zwei mapps zu dem Profil:

CreateMap<Product, ProductDto>(); 
CreateMap<Unity, UnityDto>(); 
+0

Diese Antwort sagt, um die Einstellung übergeben beim Aufruf von 'Map': http://StackOverflow.com/Questions/17085878/Automapper-Auto-Create-Createmap, aber das ist mit bekannten Typen. – ps2goat

+0

Die CreateMissingTypeMaps funktionierte bereits. –

Antwort

1

Das Problem ist, wie AutoMapper Karte anonym Objekte. Ich habe Zeit nicht AutoMapper Quellcode zu überprüfen, aber ich habe das gewünschte Verhalten mit geringfügigen Änderungen auf meinem anonymen Objekt:

var a = new { Id = p.Id, Unity = u }; 

Auf diese Weise könnte ich sogar vorherige Zuordnungen löscht, weil jetzt ist es nur CreateMissingTypeMaps verwenden.

Hinweis: In der Tat bin ich nicht sicher, ob es wirklich ein Problem ist oder ich es nur meine unwirklichen Erwartungen war.

Verwandte Themen