Classe ControlBuilderInterceptor
La classe ControlBuilderInterceptor
consente di personalizzare o controllare il processo di compilazione.
Sintassi
internal class ControlBuilderInterceptor
Avviso
La classe ControlBuilderInterceptor
è interna e non è progettata per essere usata direttamente nel codice.
Come descritto nella sezione Osservazioni, è possibile verificare l'esistenza di questo tipo per determinare se è presente il supporto del tipo di intercettore. Microsoft non supporta qualsiasi altro uso di questa classe in un'applicazione di produzione in alcuna circostanza.
Osservazioni:
In .NET Framework 2.0 e .NET Framework 3.5, gli aggiornamenti di agosto 2020 hanno aggiunto il supporto per l'uso di un tipo di intercettore per personalizzare o controllare il processo di compilazione. È possibile determinare se questo supporto è presente usando Type.GetType() per verificare l'esistenza del tipo ControlBuilderInterceptor
, come illustrato nel codice seguente.
Type type = Type.GetType("System.Web.Compilation.ControlBuilderInterceptor, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
Se il valore restituito è diverso da Null, è presente il supporto dell'intercettore. Se il valore restituito è null
o se viene generata un'eccezione, gli aggiornamenti di agosto 2020 non sono stati installati e il supporto dell'intercettore è assente.
Se è presente il supporto dell'intercettore, è possibile scrivere e registrare un tipo di intercettatore che interagirà con il processo di compilazione esattamente come ControlBuilderInterceptor nelle versioni successive di .NET Framework. In .NET Framework 2.0 e .NET Framework 3.5 il tipo di intercettore può essere qualsiasi classe che soddisfi i requisiti seguenti:
- Dispone di un costruttore pubblico senza parametri.
- Dispone di metodi pubblici non statici denominati
PreControlBuilderInit
eOnProcessGeneratedCode
che hanno la stessa firma e semantica dei metodi PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) e OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary) che esistono nelle versioni successive di .NET Framework.
Registrare il tipo di intercettore usando la chiave aspnet:20ControlBuilderInterceptor
nelle impostazioni applicazione di ASP.NET (<appSettings>
). Questa impostazione dell'applicazione deve essere elencata nel computer o nel file web.config dell'applicazione. Specificare il tipo di intercettore usando il nome del tipo qualificato dall'assembly. Nell'esempio seguente viene illustrato come registrare un tipo di intercettore denominato Fabrikam.Interceptor
.
<configuration>
...
<appSettings>
...
<add key="aspnet:20ControlBuilderInterceptor"
value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
</appSettings>
</configuration>
Per recuperare il nome completo dell'assembly di un tipo, utilizzare la proprietà Type.AssemblyQualifiedName, come illustrato nel codice seguente.
string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;
Quando è presente il supporto dell'intercettore, il processo di compilazione interagisce con il tipo elencato nel modo descritto in precedenza. Quando il supporto dell'intercettore è assente, l'impostazione dell'applicazione viene ignorata e non ha alcun effetto.
Requisiti
Namespace: System.Web.Compilation
Assembly: System.Web (in System.Web.dll)
Versioni di .NET Framework: 3.5, 2.0