类中受保护成员的反射


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用于访问非私有成员。如果我只使用这个enum, Getmethod返回空值。但是如果使用枚举-实例和非公共,则调用所需的方法。这两者的区别是什么?当我必须使用实例和公共/非公共组合时

根据GetMethod()的文档:

您必须指定BindingFlags.InstanceBindingFlags.Static以获得返回值。

Instance/StaticPublic/NonPublic指定两种不同的东西,您必须同时指定才能获得结果。

如果未指定enum,则使用默认值。如果需要,则必须同时指定:

  • 公共或非公共(或两者都有)
  • 静态或实例(或两者)

(见http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx注释部分)

相关内容

  • 没有找到相关文章

最新更新