我正在使用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}?
答案 0 :(得分:1)
我无法从您的代码中看出为什么这不起作用,但有一种更好的方法可以将一个对象的属性复制到另一个对象,这是使用AutoMapper。
你可以这样做:
Mapper.CreateMap<WorkRequest, WorkRequestV1>();
Mapper.Map(_WorkRequest, _WorkRequestV1);