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

MissingFieldException クラス

2013/12/12

存在しないフィールドに動的にアクセスしようとした場合にスローされる例外。

System.Object
  System.Exception
    System.SystemException
      System.MemberAccessException
        System.MissingMemberException
          System.MissingFieldException

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

public class MissingFieldException : MissingMemberException

MissingFieldException 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドMissingFieldException()MissingFieldException クラスの新しいインスタンスを初期化します。
パブリック メソッドMissingFieldException(String)指定したエラー メッセージを使用して、MissingFieldException クラスの新しいインスタンスを初期化します。
パブリック メソッドMissingFieldException(String, Exception)指定したエラー メッセージと、この例外の原因である内部例外への参照を使用して、MissingFieldException クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティData例外に関する追加のユーザー定義情報を提供するキー/値ペアのコレクションを取得します。 (Exception から継承されます。)
パブリック プロパティHelpLink例外に関連付けられているヘルプ ファイルへのリンクを取得または設定します。 (Exception から継承されます。)
パブリック プロパティHResult特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。 (Exception から継承されます。)
パブリック プロパティInnerException現在の例外の原因となる Exception インスタンスを取得します。 (Exception から継承されます。)
パブリック プロパティMessage存在しないメンバーのクラス名、メンバー名、シグネチャを示す文字列を取得します。 (MissingMemberException から継承されます。)
パブリック プロパティSourceエラーの原因となったアプリケーションまたはオブジェクトの名前を取得または設定します。 (Exception から継承されます。)
パブリック プロパティStackTrace現在の例外がスローされたときの、コール スタックのフレームの文字列形式を取得します。 (Exception から継承されます。)
このページのトップへ

  名前説明
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetBaseException派生クラスでオーバーライドされた場合、それ以後に発生する 1 つ以上の例外の主要な原因である Exception を返します。 (Exception から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスのランタイム型を取得します。 (Exception から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドToString現在の例外の文字列形式を作成して返します。 (Exception から継承されます。)
このページのトップへ

通常、存在しないクラス メンバーにコードでアクセスしようとすると、コンパイル エラーが生成されます。MissingFieldException は、厳密な名前では参照されていないアセンブリの、名前変更または削除されたフィールドに動的にアクセスしようとした場合に対処できるように設計されています。MissingFieldException は、変更されたアセンブリ内の存在しないフィールドに、従属アセンブリのコードがアクセスしようとしたときにスローされます。

MissingFieldException は、値 0x80131511 を保持する HRESULT COR_E_MISSINGFIELD を使用します。

MissingFieldException のインスタンスの初期プロパティ値の一覧については、MissingFieldException コンストラクターのトピックを参照してください。

この例では、リフレクションを使用して存在しないメソッドを呼び出そうとしたか、または存在しないフィールドにアクセスしようとした場合の動作を示します。このアプリケーションは、MissingMethodExceptionMissingFieldException、および MissingMemberException をキャッチして回復します。

メモメモ:

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


using System;
using System.Reflection;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      try
      {
         // Attempt to call a static DoSomething method defined in the Example class.
         // However, because the Example class does not define this field, 
         // a MissingFieldException is thrown.
         typeof(Example).InvokeMember("DoSomething", BindingFlags.Static |
             BindingFlags.InvokeMethod, null, null, null);
      }
      catch (MissingMethodException e)
      {
         // Show the user that the DoSomething method cannot be called.
         outputBlock.Text += String.Format("Unable to call the DoSomething method: {0}", e.Message) + "\n";
      }

      try
      {
         // Attempt to access a static AField field defined in the Example class.
         // However, because the Example class does not define this field, 
         // a MissingFieldException is thrown.
         typeof(Example).InvokeMember("AField", BindingFlags.Static | BindingFlags.SetField,
             null, null, new Object[] { 5 });
      }
      catch (MissingFieldException e)
      {
         // Show the user that the AField field cannot be accessed.
         outputBlock.Text += String.Format("Unable to access the AField field: {0}", e.Message) + "\n";
      }

      try
      {
         // Attempt to access a static AnotherField field defined in the Example class.
         // However, because the Example class does not define this field, 
         // a MissingFieldException is thrown.
         typeof(Example).InvokeMember("AnotherField", BindingFlags.Static |
             BindingFlags.GetField, null, null, null);
      }
      catch (MissingMemberException e)
      {
         // Notice that this code is catching MissingMemberException which is the  
         // base class of MissingMethodException and MissingFieldException.
         // Show the user that the AnotherField field cannot be accessed.
         outputBlock.Text += String.Format("Unable to access the AnotherField field: {0}", e.Message) + "\n";
      }
   }
}
// This code example produces the following output:
//
// Unable to call the DoSomething method: Method 'App.DoSomething' not found.
// Unable to access the AField field: Field 'App.AField' not found.
// Unable to access the AnotherField field: Field 'App.AnotherField' not found.


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示: