草莓♭布丁

导航

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,不然获取不到。

posted on 2021-09-24 10:16  草莓♭布丁  阅读(820)  评论(0编辑  收藏  举报

Live2D