C#利用反射动态赋值
项目中我们可能会用到根据某一字符串判断属性然后赋值:
/// <summary> /// 动态给类的属性赋值 /// </summary> /// <param name="instance"></param> /// <param name="fileld"></param> /// <param name="value"></param> public static void setValue(object instance, string fileld, string value) { Type type = instance.GetType(); object obj = Activator.CreateInstance(type); PropertyInfo[] pi = type.GetProperties(); foreach (PropertyInfo item in pi) { //给属性赋值 if ( item.Name == fileld) { item.SetValue(instance, value, null); } } }
Console.WriteLine("未动态赋值前:"+excel.B011); //赋值 setValue(excel,"B011", "22"); setValue(excel, "Id", "222"); Console.WriteLine("动态赋值后:"+excel.B011); Console.WriteLine("动态赋值后Id:" + excel.Id); Console.WriteLine("动态赋值后Name:" + excel.Name); Console.ReadLine();
运行得到的结果:
未动态赋值前:
动态赋值后:22
动态赋值后Id:222
动态赋值后Name:
浙公网安备 33010602011771号