通过传递名称获取和设置字段值
我在类中有一个具有随机名称的字段,例如:
class Foo {
public string a2de = "e2"
}
我在另一个变量中有该字段的名称,例如:
string vari = "a2de"
我可以使用 的值获取或设置字段
a2de
的值吗?变量?
喜欢:
getvar(vari)
或
setvar(vari) = "e3"
I have a field in a class with a random name like:
class Foo {
public string a2de = "e2"
}
I have the name of this field in another variable like:
string vari = "a2de"
Can I get or set the value of field a2de
by using the value of vari
?
like:
getvar(vari)
or
setvar(vari) = "e3"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你必须使用反射。
要获取
targetObject
上的属性值:要获取字段的值,其类似:
如果属性/字段不是公共的或者是从基类继承的,则需要提供显式
BindingFlags
到GetProperty
或GetField
。You have to use reflection.
To get the value of a property on
targetObject
:To get the value of a field it's similar:
If the property/field is not public or it has been inherited from a base class, you will need to provide explicit
BindingFlags
toGetProperty
orGetField
.您可以使用反射(例如
Type.GetField
等)来实现这一点 - 但这通常应该是最后的手段。您是否考虑过使用
Dictionary
并使用“变量名称”作为键?You can potentially do it with reflection (e.g.
Type.GetField
etc) - but that should generally be a last resort.Have you considered using a
Dictionary<string, string>
and using the "variable name" as the key instead?您必须使用反射来按名称访问变量。像这样:
You'd have to use Reflection to access the variable by name. Like this: