映射两个类的属性和值Linq

时间:2013-03-13 18:28:18

标签: c# .net linq

我正在使用linq来映射两个类似的对象,但我遇到的问题是它没有映射子类,它甚至在GetProperties()中都看不到它们。子类被标记为公共,所以我有点困惑为什么这个代码不起作用...有关使用其他方法的任何想法或建议。感谢您的帮助。

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

更新

在调查之后我注意到在类ex:

中声明子类时
public Person myPerson; 

GetProperties()会看到Person类,但是如果我添加

public Person myPerson {get;set;}

GetProperties()确实请参阅myPerson

最后如果我添加

public Person myPerson = new Person()

GetProperties()会看到此人。

为什么需要{get; set}?

1 个答案:

答案 0 :(得分:1)

我无法从您的代码中看出为什么这不起作用,但有一种更好的方法可以将一个对象的属性复制到另一个对象,这是使用AutoMapper

你可以这样做:

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