簡體   English   中英

反映受保護的成員

[英]Reflection of protected member of a class

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值。 但是如果使用枚舉 - 實例和非公共,則調用所需的方法。 這兩者有什么區別。 當我必須使用實例和公共/非公共組合。

根據GetMethod()的文檔

您必須指定BindingFlags.InstanceBindingFlags.Static才能獲得返回。

Instance / StaticPublic / NonPublic指定兩個不同的東西,你必須指定兩個以獲得結果。

如果未指定枚舉,則使用默認值。 如果這樣做,您必須同時指定:

  • 公共或非公共(或兩者)
  • 靜態或實例(或兩者)

(請參閱http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx上備注部分中的注釋)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM