我在一个类中有一个随机名称的字段,例如:
class Foo {
public string a2de = "e2"
}
我在另一个变量中有这个字段的名称,例如:
string vari = "a2de"
我可以使用
a2de
的值来获取或设置字段 vari
的值吗?喜欢:
getvar(vari)
或者
setvar(vari) = "e3"
最佳答案
你必须使用反射。
要获取 targetObject
上的属性值:
var value = targetObject.GetType().GetProperty(vari).GetValue(targetObject, null);
要获取字段的值,它类似于:
var value = targetObject.GetType().GetField(vari).GetValue(targetObject, null);
如果属性/字段不是公共(public)的或者它是从基类继承的,则需要向
BindingFlags
或 GetProperty
提供显式 GetField
。