我们有一个名为VisualizationSettings
的静态类,它有约20个我们制作的名为VisualizationSetting
的结构实例(单数)。
我想让另一个类从VisualizationSetting
中提取VisualizationSettings
的所有单个实例,并对其进行修改。
我向VisualizationSettings
添加了一个方法,该方法应获取并返回VisualizationSetting
的所有实例,如下所示:
public static FieldInfo[] GetFields(){
Type myType = typeof(VisualizationSetting);
FieldInfo[] myField = myType.GetFields();
return myField;
}
然后,在另一堂课中,我访问此FieldInfo[]
,对其进行迭代,然后对其进行修改,如下所示:
FieldInfo[] myField = VisualizationSettings.GetFields();
foreach (FieldInfo setting in myField) {
VisualizationSetting value = (VisualizationSetting)setting.GetValue(null);
/* A bunch of stuff to modify value */
setting.SetValue(null, value);
}
但是我在VisualizationSetting value = (VisualizationSetting)setting.GetValue(null);
行上遇到一个错误,说TargetException: Non-static field requires a target
我的困惑是,据我所知,设置应该是静态的,因为VisualizationSettings
是静态类。这里有我想念的东西吗?
答案 0 :(得分:0)
您从错误的类中获取了字段。
您应该遍历VisualizationSettings
而不是VisualizationSetting
的字段。
public static FieldInfo[] GetFields(){
Type myType = typeof(VisualizationSettings); // <-- the change is here
FieldInfo[] myField = myType.GetFields();
return myField;
}