Classe ControlBuilderInterceptor
La classe ControlBuilderInterceptor
permet de personnaliser ou de contrôler le processus de compilation.
Syntaxe
internal class ControlBuilderInterceptor
Avertissement
La classe ControlBuilderInterceptor
est interne et n’est pas destinée à être utilisée directement dans votre code.
Comme décrit dans la section Remarques, l’existence de ce type peut être vérifiée pour déterminer si le type d’intercepteur est pris en charge. Microsoft ne prend en charge aucune autre utilisation de cette classe dans une application de production, quelles que soient les circonstances.
Notes
Dans .NET Framework 2.0 et .NET Framework 3.5, les mises à jour d’août 2020 ont introduit la prise en charge de l’utilisation d’un type d’intercepteur pour personnaliser ou contrôler le processus de compilation. Vous pouvez déterminer si cette prise en charge est présente en utilisant Type.GetType() pour vérifier l’existence du type ControlBuilderInterceptor
, comme illustré dans le code suivant.
Type type = Type.GetType("System.Web.Compilation.ControlBuilderInterceptor, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
Si la valeur renvoyée n’est pas NULL, les intercepteurs sont pris en charge. Si la valeur renvoyée est null
, ou si une exception est levée, cela signifie que les mises à jour d’août 2020 n’ont pas été installées et que les intercepteurs ne sont pas pris en charge.
Si les intercepteurs sont pris en charge, vous pouvez écrire et inscrire un type d’intercepteur qui interagira avec le processus de compilation de la même façon que ControlBuilderInterceptor sur les versions ultérieures de .NET Framework. Dans .NET Framework 2.0 et .NET Framework 3.5, le type d’intercepteur peut être n’importe quelle classe qui répond aux exigences suivantes :
- Possède un constructeur public sans paramètre.
- Possède des méthodes publiques, non statiques, nommées
PreControlBuilderInit
etOnProcessGeneratedCode
qui ont la même signature et la même sémantique que les méthodes PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) et OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary) existant dans les versions ultérieures de .NET Framework.
Inscrivez le type d’intercepteur à l’aide de la clé aspnet:20ControlBuilderInterceptor
dans les paramètres de l’application ASP.NET (<appSettings>
). Ce paramètre d’application doit être répertorié dans le fichier web.config de votre ordinateur ou de votre application. Spécifiez le type d’intercepteur à l’aide de son nom de type qualifié d’assembly. L’exemple suivant montre comment inscrire un type d’intercepteur nommé Fabrikam.Interceptor
.
<configuration>
...
<appSettings>
...
<add key="aspnet:20ControlBuilderInterceptor"
value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
</appSettings>
</configuration>
Pour récupérer le nom qualifié d’assembly d’un type, utilisez la propriété Type.AssemblyQualifiedName, comme illustré dans le code suivant.
string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;
Lorsque les intercepteurs sont pris en charge, le processus de compilation interagit avec le type répertorié de la manière décrite ci-dessus. Lorsque les intercepteurs ne sont pas pris en charge, le paramètre d’application est ignoré et n’a aucun effet.
Spécifications
Espace de noms : System.Web.Compilation
Assembly : System.Web (dans System.Web.dll)
Versions de .NET Framework : 3.5, 2.0