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 月更新尚未安裝,而且攔截器支援不存在。
如果攔截器支援存在,您可以撰寫並註冊攔截器型別,其與編譯器互動的方式與 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 中。
使用 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