c# - 使用 InvokeMember 检索静态属性值

标签 c# reflection

以下代码段失败:

Unhandled Exception: System.MissingMethodException: Method 'TestApp.Example.Value' not found.

我还尝试将 BindingFlags.Static 更改为 BindingFlags.Instance 并将实际实例作为第四个参数传递,但结果相同。 有什么办法可以解决这个问题吗?

using System.Reflection;

namespace TestApp {
    class Program {
        static void Main() {
            var flags = BindingFlags.GetProperty | BindingFlags.Static | BindingFlags.Public;
            var value = typeof(Example).InvokeMember("Value", flags, null, null, null);
        }
    }

    public sealed class Example {
        public static readonly string Value = "value";
    }
}

最佳答案

Example.Value 是一个字段,而不是一个方法。改用这个:

var value = typeof(Example).GetField("Value").GetValue(null);

关于c# - 使用 InvokeMember 检索静态属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145582/

相关文章:

.net - 是否可以覆盖现有 .net 类型的类型描述符?

c# - Silverlight 的 Snoop 之类的东西

c# - 提取 n 位并从 Int32 创建 int

c# - .net 4 部分信任来自 GAC 的程序集

ruby-on-rails - 以编程方式获取 Rails 4 中的belongs_to 关联的类

java - 如何通过反射访问抽象父类中的实例字段?

c# - Visual Studio - 使用 Razor 的 C# - 第一步

C# ComboBox.Items 是属性还是数组?

java - 如果存在注释,我该如何执行某些功能?

c# - 如何检查 C# 中的动态匿名类型上是否存在属性?