2016-02-25 2 views
1

Это источник объекта:C#: Как я могу заставить autoapper отображать свойство объекта типа?

public class Source { 
    public object Obj { get; set; } 
} 

Здесь объект на самом деле является SourcePropertyType.

Я хочу, чтобы преобразовать источник этого:

public class Destination { 
    public object Obj { get; set; } 
} 

где объект DestinationPropertyType (который идентичен SourcePropertyType)

var destination = map.Map<Source, Destination>(source); 
var myObj = destination.Obj as DestinationPropertyType; 

В приведенном выше коде myObj == null даже если Obj на источник установлен ,

Надеюсь, это имеет смысл. Как изменить конфигурацию AutoMapper так, чтобы она понимала, что пункт назначения является DestinationPropertyType и отображает его так, как обычно?

+0

Почему вы используете 'object' как тип вместо типа _actual_, если это всегда такой тип? –

+0

Это автогенерированный класс прокси-сервера wsdl. По какой-то причине это объект ... – vladakolic

ответ

0

Под «идентичным SourcePropertyType» Я предполагаю, что вы имеете в виду, что они имеют одинаковые свойства и типы. В этом случае вам просто нужно иметь AutoMapper сделать карту между ними и настроить карту для содержащего типа, чтобы использовать его:

Mapper.CreateMap<SourcePropertyType, DestinationPropertyType>(); 
Mapper.CreateMap<Source, Destination>() 
     .ForMember(d => d.obj, 
       o => o.MapFrom(s => Mapper.Map<DestinationPropertyType>(s.obj As SourcePropertyType) as Object); 

Обратите внимание, что если типы недвижимости были фактических типов вместо object вам не потребуется дополнительная настройка.

+0

Моя версия automapper больше не поддерживает статический способ выполнения сопоставления, есть ли у вас более новая версия? Я не уверен, как использовать отображение при выполнении конфигурации ... – vladakolic

+0

Нет - я не использовал более новые версии automapper. Но идея должна быть одинаковой: создать карту, нанести исходный объект, отобразить его, отбросить назад к объекту. –

0

Сбросьте объекты на определенные типы, прежде чем запускать их через Automapper. Automapper не сможет сопоставить объект с объектом.