using System;
using System.Reflection;
namespace Reflection
{
class Test
{
protected void methodname()
{
Console.WriteLine(("in the world of the reflection"));
Console.Read();
}
}
class Program
{
static void Main(string[] args)
{
// BindingFlags eFlags = BindingFlags.Default | BindingFlags.Instance | BindingFlags.Public|BindingFlags.NonPublic;
BindingFlags eFlags = BindingFlags.Instance|BindingFlags.NonPublic;
Test aTest = new Test();
MethodInfo mInfoMethod = typeof(Reflection.Test).GetMethod("methodname", eFlags);
mInfoMethod.Invoke(aTest, null);
}
}
}
根据msdn BindingFlags.Nonpublic用于访问非私有成员。如果我只使用此枚举,Getmethod将返回null值。但是如果使用枚举 - 实例和非公共,则调用所需的方法。这两者有什么区别。当我必须使用实例和公共/非公共组合时。
答案 0 :(得分:3)
每the documentation of GetMethod()
:
您必须指定
BindingFlags.Instance
或BindingFlags.Static
才能获得回报。
Instance
/ Static
和Public
/ NonPublic
指定了两个不同的内容,您必须同时指定两者才能获得结果。
答案 1 :(得分:1)
如果您未指定枚举,则使用默认值。如果这样做,则必须同时指定:
(请参阅http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx上的备注部分中的注释)