Ich habe meine Viewmodel-Klassen und auch meine WCF-Service-Klassen (separates Projekt). Ich muss die Viewmodel-Klassen in wcf-Klassen konvertieren und umgekehrt. Derzeit verwende ich die folgende Methode:Zwei-Wege-Konvertierung mit AutoMapper
public static class ExtensionMethods
{
public static object To<T>(this object source)
{
// create the map
Mapper.CreateMap(source.GetType(), typeof (T));
// if the source is a list
if(source is IEnumerable)
{
return Mapper.Map(source, source.GetType(), typeof (List<T>));
}
// return the mapping
return (T) Mapper.Map(source, source.GetType(), typeof (T));
}
}
// converting the wcf class to viewmodel
var orders = (List<OrderStatusViewModel>) _orderStatusServiceClient.GetRecentOrders().To<OrderStatusViewModel>();
// converting the viewmodel to the wcf class
var order = (Order) orderStatusViewModel.To<Order>();
Ist dies der beste Weg, dies zu tun? Denken Sie daran, ich muss dies in beiden Richtungen durchführen, d. H. Viewmodel => wcf-Klassen und wcf-Klassen => viewmodel.
„Der beste Weg, dies zu tun“ können Fragen schwierig sein, effektiv zu beantworten. Auf einen Blick sehe ich kein Problem. ** Ist ** dieser Code ein Problem? Was ist der Grund für deine Frage? –
Es verursacht keine Probleme! Ich habe mich gefragt, ob es einen besseren Weg gibt. Das Problem kann auftreten, wenn die Zuordnung zwischen den beiden Klassen aufgrund unterschiedlicher Eigenschaftsnamen nicht übereinstimmt. – johndoe
Mapper.DynamicMap (Quelle) sollte das gleiche tun. Sie könnten dies tatsächlich tun: GetRecentOrders(). Wählen Sie (Mapper.DynamicMap ) und löschen Sie die Erweiterungsmethode To vollständig. –
jwize