我有以下代码:
FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
我要做的是在运行时使用反射获取当前实例化实例的属性之一的值。我怎样才能做到这一点?
我有以下代码:
FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
我要做的是在运行时使用反射获取当前实例化实例的属性之一的值。我怎样才能做到这一点?
像这样的东西应该工作:
var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);
尝试GetProperties方法,它应该为您获取属性,而不是字段。
要检索该值,请执行以下操作:
object foo = ...;
object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);
这是使用 GetProperty,它只返回一个 PropertyInfo 对象,而不是它们的数组。然后我们调用 GetValue,它接受对象的一个参数以从中检索值(PropertyInfo 特定于类型,而不是实例)。GetValue 的第二个参数是索引器数组,用于索引属性,我假设您感兴趣的属性不是索引属性。(索引属性可以让您list[14]
检索列表的第 14 个元素。)