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
的公用非靜態方法,其簽章和語意與 PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) 和 OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary) 方法相同,這些方法存在於更新版本的 .NET Framework 中。
在 ASP.NET 應用程式設定中使用 aspnet:20ControlBuilderInterceptor
鍵來註冊攔截器類型(<appSettings>
)。 這個應用程式設定必須列在您的電腦或應用程式 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