Двухстороннее преобразование с использованием AutoMapper - PullRequest
0 голосов
/ 06 января 2011

У меня есть классы 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 => классы wcf и классы wcf => viewmodel.

1 Ответ

0 голосов
/ 22 февраля 2011

Одна вещь, о которой следует быть осторожным, это переопределять ваши карты снова и снова.У меня был взорван код из-за этого.

Поскольку ваш метод не привязан к каким-либо определенным типам, я бы рекомендовал удалить вызов CreateMap и изменить вызовы Map на DynamicMap.

Также,если ваш общий тип параметра IEnumerable, когда вы вводите, тогда ваш if будет ненужным с DynamicMap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...