ControlBuilderInterceptor クラス
ControlBuilderInterceptor
クラスを使用すると、コンパイル プロセスをカスタマイズまたは制御できます。
構文
internal class ControlBuilderInterceptor
警告
ControlBuilderInterceptor
クラスは内部クラスであり、コード内で直接使用するためのものではありません。
「解説」セクションで説明されているように、この型の存在を確認して、インターセプター型のサポートが存在するかどうかを判断できます。 Microsoft は、いかなる状況でも、運用環境のアプリケーションでこのクラスの他の使用をサポートしていません。
備考
.NET Framework 2.0 および .NET Framework 3.5 では、August 2020 更新プログラムにより、インターセプター型を使用してコンパイル プロセスをカスタマイズまたは制御するためのサポートが追加されました。 このサポートが存在するかどうかを判断するには、次のコードに示すように、Type.GetType() を使用して ControlBuilderInterceptor
型の存在を確認します。
Type type = Type.GetType("System.Web.Compilation.ControlBuilderInterceptor, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
戻り値が null 以外の場合は、インターセプターのサポートが存在します。 戻り値が null
場合、または例外がスローされた場合、2020 年 8 月の更新プログラムはインストールされておらず、インターセプターのサポートはありません。
インターセプターのサポートが存在する場合は、ControlBuilderInterceptor が .NET Framework の新しいバージョンで行うのとまったく同じ方法でコンパイル プロセスと対話するインターセプター型を記述して登録できます。 .NET Framework 2.0 および .NET Framework 3.5 では、インターセプターの種類は、次の要件を満たす任意のクラスにすることができます。
- パラメーターなしのパブリック コンストラクターがあります。
-
PreControlBuilderInit
およびOnProcessGeneratedCode
という名前のパブリックで非静的なメソッドがあり、PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) メソッドおよび OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary) メソッドと同じシグネチャとセマンティクスを持ち、新しいバージョンの .NET Framework に存在します。
アプリケーション設定 (<appSettings>
) で aspnet:20ControlBuilderInterceptor
キーを使用してインターセプターの種類 ASP.NET 登録します。 このアプリケーション設定は、コンピューターまたはアプリケーションの web.config ファイルに一覧表示されている必要があります。 アセンブリ修飾型名を使用してインターセプター型を指定します。 次の例は、Fabrikam.Interceptor
という名前のインターセプター型を登録する方法を示しています。
<configuration>
...
<appSettings>
...
<add key="aspnet:20ControlBuilderInterceptor"
value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
</appSettings>
</configuration>
型のアセンブリ修飾名を取得するには、次のコードに示すように、Type.AssemblyQualifiedName プロパティを使用します。
string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;
インターセプターのサポートが存在する場合、コンパイル プロセスは、上記の方法でリストされている型と対話します。 インターセプターのサポートがない場合、アプリケーション設定は無視され、影響はありません。
必要条件
名前空間: System.Web.Compilation
アセンブリ: System.Web (System.Web.dll内)
.NET Framework のバージョン: 3.5、2.0
.NET