2013-03-13 2 views
0

Я использую linq для сопоставления двух похожих объектов, но у меня возникает проблема, что он не отображает подклассы, которые он даже не видит в GetProperties(). Подклассы отмечены как общедоступные, поэтому я немного смущен, почему этот код не работает ... Любые идеи или предложения по использованию другого метода/с. Заранее благодарны за Вашу помощь.Отображение двух классов Свойства и значения Linq

foreach (PropertyInfo pInfo in _WorkRequest.GetType().GetProperties()) 
{ 
_WorkRequestV1.GetType().GetProperty(pInfo.Name).SetValue(_WorkRequestV1, pInfo.GetValue(_WorkRequest, null), null); 
} 

UPDATE

Посмотрев на это, я заметил, что при объявлении подкласса внутри класса Ex:

public Person myPerson; 

GetProperties() делает не см класс Person, но если Я добавлю

public Person myPerson {get;set;} 

GetProperties() делает см myPerson

Наконец, если добавить

public Person myPerson = new Person() 

GetProperties() делает не видеть человека.

Как это получилось {get; set}?

+1

Ну, 'общественное лицо myPerson' не является свойством, но поле. 'public Person myPerson {get; set;}' является свойством. Как вы выполняете 'GetProperties' после' public Person myPerson = new Person() '? –

+0

@GertArnold Что вы имеете в виду, как мне выполнить GetProperties, что я делаю, это List myList = _WorkRequest.GetType(). GetProperties(). ToList(); где внутри моего класса _WorkRequest у меня есть Person myPerson = new Person как свойство. –

+0

Вы должны показать больше кода. Если Person является публичным свойством класса WorkRequest, он должен появиться в GetProperties(). –

ответ

1

Я не могу сказать из вашего кода, почему это не сработает, но есть лучший способ скопировать свойства одного объекта на другой объект, а именно: AutoMapper.

Вы можете сделать:

Mapper.CreateMap<WorkRequest, WorkRequestV1>(); 
Mapper.Map(_WorkRequest, _WorkRequestV1); 
+0

благодарит за быстрый ответ. Я попытался использовать AutoMapper, но получаю исключение. Попытка сопоставить два объекта. Я сделал классы одинаковыми и все еще получаю сообщение об ошибке. Может ли это быть из-за подклассов? AutoMapper.AutoMapperMappingException '. –

+0

См. Обновленный вопрос –

Смежные вопросы