Clase ControlBuilderInterceptor
La clase ControlBuilderInterceptor
permite personalizar o controlar el proceso de compilación.
Sintaxis
internal class ControlBuilderInterceptor
Advertencia
La clase ControlBuilderInterceptor
es interna y no está pensada para usarse directamente en el código.
Como se describe en la sección Comentarios, se puede comprobar la existencia de este tipo para determinar si la compatibilidad con el tipo interceptor está presente. Microsoft no admite el uso de esta clase en una aplicación de producción bajo ninguna circunstancia.
Comentarios
En .NET Framework 2.0 y .NET Framework 3.5, las actualizaciones de agosto de 2020 agregaron compatibilidad para usar un tipo de interceptor para personalizar o controlar el proceso de compilación. Puedes determinar si esta compatibilidad está presente mediante Type.GetType() para comprobar la existencia del tipo ControlBuilderInterceptor
, como se muestra en el código siguiente.
Type type = Type.GetType("System.Web.Compilation.ControlBuilderInterceptor, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
Si el valor devuelto no es NULL, la compatibilidad con el interceptor está presente. Si el valor devuelto es null
, o si se produce una excepción, las actualizaciones de agosto de 2020 no se han instalado y la compatibilidad con el interceptor no está presente.
Si la compatibilidad con el interceptor está presente, puede escribir y registrar un tipo de interceptor que interactuará con el proceso de compilación exactamente de la misma manera que ControlBuilderInterceptor en versiones posteriores de .NET Framework. En .NET Framework 2.0 y .NET Framework 3.5, el tipo de interceptor puede ser cualquier clase que cumpla los siguientes requisitos:
- Tiene un constructor público sin parámetros.
- Tiene métodos públicos y no estáticos denominados
PreControlBuilderInit
yOnProcessGeneratedCode
que tienen la misma firma y semántica que los PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) métodos y OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary), que existen en versiones posteriores de .NET Framework.
Registra el tipo de interceptor mediante la aspnet:20ControlBuilderInterceptor
clave de ASP.NET configuración de la aplicación (<appSettings>
). Esta configuración de la aplicación debe figurar en el archivo web.config de tu ordenador o de la aplicación. Especifica el tipo de interceptor mediante su nombre de tipo calificado para ensamblados. En el ejemplo siguiente se muestra cómo registrar un tipo de interceptor denominado Fabrikam.Interceptor
.
<configuration>
...
<appSettings>
...
<add key="aspnet:20ControlBuilderInterceptor"
value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
</appSettings>
</configuration>
Para recuperar el nombre completo de ensamblado de un tipo, usa la propiedad Type.AssemblyQualifiedName, tal y como se muestra en el código siguiente.
string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;
Cuando la compatibilidad con el interceptor está presente, el proceso de compilación interactúa con el tipo enumerado de la manera descrita anteriormente. Cuando la compatibilidad con el interceptor no está presente, se omite la configuración de la aplicación y no tiene ningún efecto.
Requisitos
Namespace: System.Web.Compilation
Ensamblado: System.Web (en System.Web.dll)
Versiones de .NET Framework: 3.5, 2.0