以下代码失败:
未处理的异常:System.MissingMethodException:找不到方法'TestApp.Example.Value'。
我还尝试将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";
}
}
答案 0 :(得分:3)
Example.Value
是一个字段,而不是一个方法。请改用:
var value = typeof(Example).GetField("Value").GetValue(null);
答案 1 :(得分:1)
我认为您正在寻找FieldInfo,例如msdn
class MyClass
{
public static String val = "test";
public static void Main()
{
FieldInfo myf = typeof(MyClass).GetField("val");
Console.WriteLine(myf.GetValue(null));
val = "hi";
Console.WriteLine(myf.GetValue(null));
}
}
答案 2 :(得分:0)
这是一个字段,因此您要使用GetField
和GetValue
与InvokeMember
的组合
var value = typeof(Example).GetField("Value", flags).GetValue(null);