我有我的viewmodel类以及我的wcf服务类(单独的项目)。我需要将viewmodel类转换为wcf类,反之亦然。目前我使用以下方法:
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>();
这是最好的方法吗?请记住,我必须在两个方向上执行此操作,即viewmodel =&gt; wcf类和wcf类=&gt;视图模型。
答案 0 :(得分:0)
要注意的一件事是一遍又一遍地重新定义地图。我已经把代码搞砸了。
由于您的方法不依赖于任何特定类型,我建议删除CreateMap调用并将Map调用更改为DynamicMap。
另外,如果你的输入是你的通用参数类型是IEnumerable,那么DynamicMap就不需要了你的if