0
내 viewmodel 클래스와 wcf 서비스 클래스 (별도 프로젝트)가 있습니다. viewmodel 클래스를 wcf 클래스로 변환하고 다른 방법으로 변환해야합니다. 현재 다음 방법을 사용하고 있습니다.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>();
이렇게하는 것이 가장 좋은 방법입니까? 뷰 모드 => wcf 클래스와 wcf 클래스 => viewmodel 두 방향 모두에서이 작업을 수행해야한다는 것을 명심하십시오.
DynamicMap 불필요한 될 경우 "할 수있는 가장 좋은 방법이"질문에 효과적으로 대답하기 까다로운 일이 될 수 있습니다. 한 눈에 문제가 발생하지 않습니다. ** **이 코드가 문제의 원인입니까? 귀하의 질문에 대한 이유는 무엇입니까? –
아무런 문제가 발생하지 않았습니다! 더 좋은 방법이 있는지 궁금 해서요. 서로 다른 속성 이름으로 인해 두 클래스 간의 매핑이 일치하지 않으면 문제가 발생할 수 있습니다. – johndoe
Mapper.DynamicMap (원본)이 동일한 작업을 수행해야합니다. GetRecentOrders(). (Mapper.DynamicMap )를 선택하고 To 확장 메서드를 모두 삭제할 수 있습니다. –
jwize