-
获取字段信息 :通过字段名从
Variable_Library
类中获取静态公共属性的PropertyInfo
。 -
解析值:根据字段类型,将字符串值解析为对应类型的对象。
-
赋值:将解析后的值赋给字段,如果字段不存在则输出调试信息。
cs
public static void AssignValue(string variableName, string variableType, string variableValue)
{
// 获取当前类型的字段信息
PropertyInfo? field = typeof(Variable_Library).GetProperty(variableName, BindingFlags.Static | BindingFlags.Public);
if (field != null)
{
// 根据类型解析值
object value = ParseValue(variableType, variableValue);
// 为变量赋值
field.SetValue(null, value);
}
else
{
Debug.WriteLine($"Field {variableName} not found.");
}
}
详细解析
-
获取字段信息
csPropertyInfo? field = typeof(Variable_Library).GetProperty(variableName, BindingFlags.Static | BindingFlags.Public);
-
使用
typeof(Variable_Library)
获取Variable_Library
类的类型信息。 -
调用
GetProperty
方法,传入字段名variableName
和绑定标志BindingFlags.Static | BindingFlags.Public
,查找静态且公共的属性。 -
如果找到对应的属性,
field
会被赋值为对应的PropertyInfo
对象;否则为null
。
-
-
解析值
csobject value = ParseValue(variableType, variableValue);
csprivate static object ParseValue(string type, string value) { switch (type) { case "string": return value; case "Int32": return int.Parse(value, CultureInfo.InvariantCulture); case "Boolean[]": string[] strings = value.Split(' '); bool[] bools=new bool[strings.Length]; for (int i = 0; i < strings.Length; i++) { if(!bool.TryParse(strings[i], out bools[i])) { bools[i] = false; // 如果解析失败,默认设置为false } } return bools; case "Int64": return long.Parse(value); case "DateTime": return DateTime.Parse(value); default: throw new ArgumentException($"Unsupported type: {type}"); } }
-
调用
ParseValue
方法,根据字段类型variableType
和字符串值variableValue
,解析出对应类型的对象。 -
ParseValue
方法的作用是将字符串转换为指定类型的值(例如,将字符串"true"
转换为布尔值true
)。
-
-
赋值:
csfield.SetValue(null, value);
-
如果字段存在(
field != null
),调用SetValue
方法为字段赋值。 -
null
表示字段是静态的,value
是解析后的值。
-
-
处理字段不存在的情况
csDebug.WriteLine($"Field {variableName} not found.");
- 如果字段不存在(
field == null
),输出调试信息,提示字段未找到。
- 如果字段不存在(
总结
这段代码的作用是:
-
通过字段名从
Variable_Library
类中查找静态公共属性。 -
如果找到字段,解析字符串值为对应类型的对象,并为字段赋值。
-
如果字段不存在,输出调试信息提示。