Luc*_*oli 4 c# reflection field
我在类中有一个字段,其随机名称如下:
class Foo {
public string a2de = "e2"
}
Run Code Online (Sandbox Code Playgroud)
我在另一个变量中有这个字段的名称,如:
string vari = "a2de"
Run Code Online (Sandbox Code Playgroud)
我可以a2de使用值来获取或设置字段的值vari吗?
喜欢:
getvar(vari)
Run Code Online (Sandbox Code Playgroud)
要么
setvar(vari) = "e3"
Run Code Online (Sandbox Code Playgroud)
你必须使用反射.
要获取属性的值,请执行以下操作targetObject:
var value = targetObject.GetType().GetProperty(vari).GetValue(targetObject, null);
Run Code Online (Sandbox Code Playgroud)
要获得字段的值,它是类似的:
var value = targetObject.GetType().GetField(vari).GetValue(targetObject, null);
Run Code Online (Sandbox Code Playgroud)
如果属性/字段不是公共的或已从基类继承,则需要提供显式的BindingFlagsto GetProperty或GetField.
你可以用反射(例如Type.GetField等)来做这件事- 但这通常应该是最后的手段.
您是否考虑使用Dictionary<string, string>并使用"变量名称"作为密钥?
| 归档时间: |
|
| 查看次数: |
11943 次 |
| 最近记录: |