ControlBuilderInterceptor クラス
ControlBuilderInterceptor
クラスは、コンパイル処理をカスタマイズまたは制御できるようにします。
構文
internal class ControlBuilderInterceptor
警告
ControlBuilderInterceptor
は内部クラスであり、コードで直接使用されるものではありません。
「解説」で説明されているように、この型の存在を確認して、インターセプター型のサポートが存在するかどうかを確認することができます。 Microsoft では、状況に関係なく、実稼働アプリケーションでのこのクラスの使用は、これ以外サポートしていません。
解説
.NET Framework 2.0 および .NET Framework 3.5 では、2020 年 8 月の更新プログラムにより、コンパイル プロセスをカスタマイズまたは制御するインターセプター型を使用できるようになりました。 このサポートが存在するかどうかを判断するには、次のコードに示すように、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 月の更新プログラムがインストールされておらず、インターセプターのサポートは存在しません。
インターセプターのサポートが存在する場合は、以降のバージョンの .NET Framework における ControlBuilderInterceptor と同じ方法でコンパイル プロセスと対話するインターセプター型を記述し、登録することができます。 .NET Framework 2.0 および .NET Framework 3.5 の場合、インターセプター型は、次の要件を満たす任意のクラスにすることができます。
- パブリックのパラメーターなしのコンストラクターがある。
PreControlBuilderInit
およびOnProcessGeneratedCode
という名前で、以降のバージョンの .NET Framework に存在する PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) および OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary) メソッドと同じ署名およびセマンティクスを持つ、パブリックの非 static メソッドがある。
ASP.NET アプリケーション設定 (<appSettings>
) の aspnet:20ControlBuilderInterceptor
キーを使用して、インターセプター型を登録します。 このアプリケーション設定は、コンピューターまたはアプリケーションの 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