AutoMapper verwenden den falschen Konstruktor

Heute aktualisierte ich eine voll funktionsfähige Anwendung mit AutoMapper v1.1 jetzt AutoMapper v2.1, und ich komme auf einige Fragen, die ich nie begegnet mit der vorherigen version.

Hier ein Beispiel von meinem code-Zuordnung wieder aus Dto zu Domain Objekt

public class TypeOne
{
   public TypeOne()
   {
   }

   public TypeOne(TypeTwo two)
   {
      //throw ex if two is null
   }

   public TypeOne(TypeTwo two, TypeThree three)
   {
      //throw ex if two or three are null
   }

   public TypeTwo Two {get; private set;}

   public TypeThree Three {get; private set;}
}

public class TypeOneDto
{
   public TypeOneDto()
   {
   }

   public TypeTwoDto Two {get; set;}

   public TypeThreeDto Three {get; set;}
}

...

Mapper.CreateMap<TypeThreeDto, TypeThree>();
Mapper.CreateMap<TypeTwoDto, TypeTwo>();
Mapper.CreateMap<TypeOneDto, TypeOne>();

var typeOne = Mapper.Map<TypeOne>(typeOneDto);

Jedoch das erste problem begegnete ich mit v2.1 war, dass AutoMapper wurde versucht, verwenden Sie den Konstruktor mit 2 args, wenn eines der Argumente null war und sollte mit der 1 arg-Konstruktor.

Dann habe ich versucht, zu verwenden

Mapper.CreateMap<TypeOneDto, TypeOne>().ConstructUsing(x => new TypeOne());

Aber ich habe immer ein 'Mehrdeutig Aufruf' Fehler konnte ich nicht beheben.

Dann habe ich versucht,

Mapper.CreateMap<TypeOneDto, TypeOne>().ConvertUsing(x => new TypeOne());

und hat erfolgreich die TypeOne Objekt über den parameterlosen Konstruktor, aber dann scheiterte es um die private setter-Eigenschaften.

Habe ich mich für die Hilfe auf der AutoMapper website und den Quellcode heruntergeladen haben, gut Aussehen, aber kommt nicht weit mit der kleinen Dokumentation über und es gab nicht viele unit-tests für ConstructUsing.

Ist es etwas offensichtlich, dass ich vermisst werde, dass ich das ändern sollte mit v2.1? Ich bin überrascht, dass es so viel geändert hat von v1.1.

InformationsquelleAutor Mark Vickery | 2012-06-21
Schreibe einen Kommentar