C#基于反射通过string获取成员变量
在读入数据的时候,常常会出现这种数据结构。
按照一般的方法,每次要获取第i个变量,都需要写五个if else。这才五个,那如果十个,二十个呢,这根本不得行啊。
解决方法就是,利用反射,通过字符串获取成员变量,具体如下:
float diff_i = 0; var targetData = ****** //获取目标对象 PropertyInfo propertyInfo = targetData.GetType().GetProperty("Difficulty1_StuffProportion"); try { var value = propertyInfo.GetValue(targetData, null); //利用反射获取对象的目标成员 diff_i = Convert.ToSingle(value); } catch (Exception e) { Console.WriteLine(e); }
注意,被获取的成员需要一个get set,不然获取不到。