【问题标题】:How to get a property value using reflection如何使用反射获取属性值
【发布时间】:2012-04-26 17:01:01
【问题描述】:

我有以下代码:

FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

我要做的是在运行时使用反射获取当前实例化实例的属性之一的值。我该怎么做?

【问题讨论】:

标签: c# reflection


【解决方案1】:

这样的事情应该可以工作:

var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);

【讨论】:

    【解决方案2】:

    尝试GetProperties 方法,它应该为您获取属性,而不是字段。

    要检索值,请执行以下操作:

    object foo = ...;
    object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);
    

    这是使用 GetProperty,它只返回一个 PropertyInfo 对象,而不是它们的数组。然后我们调用 GetValue,它接受对象的参数以从中检索值(PropertyInfo 特定于类型,而不是实例)。 GetValue 的第二个参数是一个索引器数组,用于索引属性,我假设您感兴趣的属性不是索引属性。 (索引属性让您可以通过 list[14] 检索列表的第 14 个元素。)

    【讨论】:

    • 我认为 OP 对一个属性特别感兴趣,而仅该函数不会获得价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多