次の方法で共有


リフレクション出力によるシンボリック情報の出力

リフレクション出力を使用して、動的モジュールに対してシンボリック情報を定義できます。 シンボリック情報を定義するには、既定のシンボル ライター インターフェイスまたは呼び出し元によって指定されたシンボル ライター インターフェイスを使用します。 リフレクション出力は、System.Diagnostics.SymbolStore 名前空間の下位のシンボル ライター インターフェイスに対して、使いやすい、上位の抽象化クラスを提供します。

呼び出し元では、動的モジュールにシンボリック情報が格納されることを示すため、動的モジュールを定義する適切なメソッドを呼び出す必要があります。 シンボリック情報を格納する動的モジュールを作成する方法については、「動的モジュールの定義」を参照してください。 シンボリック情報を格納する目的で作成されていない動的モジュールに対してシンボル ライター メソッドを呼び出すと、エラーになります。

リフレクション出力により提供されるシンボリック情報出力メソッドを次に示します。

  • 動的モジュールに関連付けられているシンボル ライター インターフェイスを取得するには、ModuleBuilder.GetSymWriter メソッドを使用します。

  • 動的モジュールのユーザー エントリ ポイントを定義するには、ModuleBuilder.SetUserEntryPoint メソッドを使用します。 ユーザー エントリ ポイントとは、ユーザーがエントリ ポイントとして識別したメソッドです。そのメイン メソッドを呼び出す前に呼び出し元が生成するスタブではありません。

  • ドキュメント オブジェクトを定義するには、ModuleBuilder.DefineDocument メソッドを使用します。

  • シンボル ストアに格納されているカスタム属性をモジュール、メソッド、およびコンストラクターに対して定義するには、ModuleBuilder.SetSymCustomAttribute メソッド、MethodBuilder.SetSymCustomAttribute メソッド、および ConstructorBuilder.SetSymCustomAttribute メソッドをそれぞれ使用します。

  • シーケンス ポイントを識別するには、ILGenerator.MarkSequencePoint メソッドを使用します。

  • 構文スコープを定義するには、ILGenerator.BeginScope メソッドと ILGenerator.EndScope メソッドを使用します。

  • メソッドまたはコンストラクターのローカル変数の名前を設定するには、LocalBuilder.SetLocalSymInfo メソッドを使用します。 ローカル変数の構文スコープも指定できます。 LocalBuilder オブジェクトを取得するには、ILGenerator.DeclareLocal を呼び出します。

参照

その他の技術情報

リフレクション出力の使用