使用 InvokeMember 检索静态属性值
以下代码段失败并显示:
未处理的异常: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";
}
}
The following piece of code fails with:
Unhandled Exception: System.MissingMethodException: Method 'TestApp.Example.Value' not found.
I also tried changing BindingFlags.Static
into BindingFlags.Instance
and passing an actual instance as the fourth parameter but with the same results.
Is there any way I can fix this?
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";
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Example.Value
是一个字段,而不是一个方法。使用这个代替:Example.Value
is a field, not a method. Use this instead:我认为您正在寻找 FieldInfo,例如 msdn
I think you are looking for FieldInfo, example on msdn
这是一个字段,因此您需要使用
GetField
和GetValue
与InvokeMember
的组合This is a field so you want to use a combination of
GetField
andGetValue
vs.InvokeMember