情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

PropertyInfo.GetGetMethod メソッド (Boolean)

2013/12/12

派生クラスによってオーバーライドされた場合に、このプロパティのパブリックまたは非パブリックな get アクセサーを返します。

Namespace:  System.Reflection
アセンブリ:  mscorlib (mscorlib.dll 内)

public abstract MethodInfo GetGetMethod(
	bool nonPublic
)

パラメーター

nonPublic
型: System.Boolean
非パブリックなアクセサーを返す場合は true。それ以外の場合は false

戻り値

型: System.Reflection.MethodInfo
nonPublictrue の場合は、このプロパティの get アクセサー。nonPublicfalseget アクセサーが非パブリックな場合、または nonPublictrue でも get アクセサーがない場合は、null を返します。

例外条件
MethodAccessException

アプリケーション コードが、Type.InvokeMember メソッドなどを使用して、このメンバーに遅延バインディングでアクセスしようとしています。

このプロパティは、get アクセサーを表す MethodInfo です。

GetGetMethod メソッドを使用するには、最初に Type クラスを取得します。そして、Type から PropertyInfo を取得します。PropertyInfo から GetGetMethod メソッドを使用します。

GetGetMethod メソッドの 2 種類の使用方法をオーバーロードした例を次に示します。この例では、パブリック プロパティとプロテクト プロパティを定義しています。GetGetMethod() メソッドと GetGetMethod(Boolean) メソッドのオーバーロードを使用して、両方のプロパティの get アクセサーを表示します。最初のケースでは、パブリック プロパティの get アクセサーだけが表示されます。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;

class Example
{
   // Define properties with different access levels.

   private string myCaption = "A Default caption";
   public string Caption   
   {
      get
      {
         return myCaption;
      }
   }

   private string myText = "Default text.";
   protected string Text   
   {
      get
      {
         return myText;
      }
   }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Get the PropertyInfo objects.
      PropertyInfo captionInfo = typeof(Example).GetProperty("Caption");
      PropertyInfo textInfo = 
         typeof(Example).GetProperty("Text", 
                                     BindingFlags.NonPublic | BindingFlags.Instance);

      outputBlock.Text += "Public get accessors:\n";

      // List the public get accessors.
      MethodInfo[] publicGetAccessors = { captionInfo.GetGetMethod(), 
                                          textInfo.GetGetMethod() };

      foreach (MethodInfo mi in publicGetAccessors)
      {
         if (mi == null)
         {
            outputBlock.Text += "No get accessor was found.\n";
         }
         else
         {
            outputBlock.Text += mi.ToString() + "\n";
         }
      }

      outputBlock.Text += "\nAll get accessors:\n";

      // List all get accessors.
      MethodInfo[] allGetAccessors = { captionInfo.GetGetMethod(true), 
                                       textInfo.GetGetMethod(true) };

      foreach( MethodInfo mi in allGetAccessors )
      {
         if (mi==null)
         {
            outputBlock.Text += "No get accessor was found.\n";
         }
         else
         {
            outputBlock.Text += mi.ToString() + "\n";
         }
      }
   }
}

/* This example produces the following output:

Public get accessors:
System.String get_Caption()
No get accessor was found.

All get accessors:
System.String get_Caption()
System.String get_Text()
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: