今天开发中遇到一个问题,一个model有80多个属性(字段),现需要给这些属性赋值。如果使用判断取一一匹配的话,估计需要几百行代码。那么有没有很好的办法能够自动匹配属性并赋值呢?
答案肯定是有的——反射遍历属性。
我这里建了一个控制太应用程序进行测试,并建了一个Student的model类,并给了3个字段。
Student
/// <summary>
/// 测试用的model,暂且给他3个字段
/// </summary>
public class Student
{
public string studentName { get; set; }
public int age { get; set; }
public string className { get; set; }
}
获得Student对象属性名称
PropertyInfo[] propertys = student.GetType().GetProperties();//获得student对象的所有属性
我们来测试一下数组propertys中有没有存下对象的属性
通过遍历propertys数组打印,可以看到数组的长度为3,属性的名字和数据类型也正好与Student中的属性一致。
在开发中我们致需要获得对象属性的名称,并不需要属性的数据类型。
通过GetValue()方法取出对象属性的值
通过SetValu()方法给对象赋值