【发布时间】:2014-11-23 09:09:57
【问题描述】:
我有课
class Person {
public string Name {get; set;}
public int Age {get; set;}
public string Phone {get; set;}
// many other properties
}
这个人的数据来自DataRow,问题是没有一对一的映射,如下图:-
public DataRow doMapping()
{
DataRow row = new DataRow();
FillDataInto(row);
Person p1 = new Person();
p1.Name = row["FirstName"] + " " + row["LastName"];
p1.Age = row["Age"];
p1.Phone = row["Phone"] + " " + row["Extension"];
p1.Prop1 = row["Prop1"];
p1.PropXY = row["PropXY"];
// many others ...
}
如图所示,一些属性来自我数据库的不同列。我需要一些帮助来创建一个反射函数来将行属性映射到Person
目前我有以下内容,它将适用于一对一映射,
(如上例中的Age):-
public DataRow doMapping(){
DataRow row = new DataRow();
FillDataInto(row);
Person p1 = new Person();
Type type = Person.GetType();
PropertyInfo[] props = type.getProperties();
foreach(PropertyInfo p in props)
{
string name = p.Name;
p.SetValue(p1, row[name]);
}
}
我只需要改进它来处理前面提到的情况。
(我可以稍后清理,一旦我理解了核心逻辑)
【问题讨论】:
标签: c# reflection properties datarow propertyinfo