ControlBuilderInterceptor-Klasse
Die ControlBuilderInterceptor
-Klasse ermöglicht das Anpassen oder Steuern des Kompiliervorgangs.
Syntax
internal class ControlBuilderInterceptor
Warnung
Die ControlBuilderInterceptor
-Klasse ist eine interne Klasse und nicht für die direkte Verwendung in Ihrem Code vorgesehen.
Wie im Abschnitt „Hinweise“ beschrieben, kann das Vorhandensein dieses Typs überprüft und somit festgestellt werden, ob Interceptortypen unterstützt werden. Jede andere Verwendung dieser Klasse in einer Produktionsanwendung wird von Microsoft unter keinen Umständen unterstützt.
Bemerkungen
In .NET Framework 2.0 und .NET Framework 3.5 wurde in den Updates von August 2020 Unterstützung für die Verwendung eines Interceptortyps zum Anpassen oder Steuern des Kompilierungsprozesses hinzugefügt. Sie können ermitteln, ob diese Unterstützung vorliegt, indem Sie das Vorhandensein des ControlBuilderInterceptor
-Typs anhand von Type.GetType() überprüfen, wie im folgenden Code veranschaulicht.
Type type = Type.GetType("System.Web.Compilation.ControlBuilderInterceptor, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
Wenn der Rückgabewert ungleich NULL ist, werden Interceptortypen unterstützt. Wenn der Rückgabewert null
ist oder eine Ausnahme ausgelöst wird, wurden die Updates von August 2020 nicht installiert, und es liegt keine Interceptorunterstützung vor.
Wenn Interceptorunterstützung vorhanden ist, können Sie einen Interceptortyp schreiben und registrieren, der mit dem Kompilierungsprozess auf dieselbe Weise interagiert wie ControlBuilderInterceptor in späteren Versionen von .NET Framework. In .NET Framework 2.0 und .NET Framework 3.5 kann der Interceptortyp eine beliebige Klasse sein, die die folgenden Anforderungen erfüllt:
- Sie verfügt über einen öffentlichen Konstruktor ohne Parameter.
- Sie verfügt über öffentliche, nicht statische Methoden namens
PreControlBuilderInit
undOnProcessGeneratedCode
, die dieselbe Signatur und Semantik wie die Methoden PreControlBuilderInit(ControlBuilder, TemplateParser, ControlBuilder, Type, String, String, IDictionary, IDictionary) und OnProcessGeneratedCode(ControlBuilder, CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod, IDictionary) aufweisen, die in späteren Versionen von .NET Framework vorhanden sind.
Registrieren Sie den Interceptortyp mithilfe des aspnet:20ControlBuilderInterceptor
-Schlüssels in den ASP.NET-Anwendungseinstellungen (<appSettings>
). Diese Anwendungseinstellung muss in der Datei web.config für Ihren Computer oder Ihre Anwendung aufgeführt sein. Geben Sie den Interceptortyp anhand des Typnamens mit Assemblyqualifikation an. Das folgende Beispiel zeigt, wie Sie einen Interceptortyp namens Fabrikam.Interceptor
registrieren.
<configuration>
...
<appSettings>
...
<add key="aspnet:20ControlBuilderInterceptor"
value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
</appSettings>
</configuration>
Verwenden Sie zum Abrufen des Typnamens mit Assemblyqualifikation die Type.AssemblyQualifiedName-Eigenschaft, wie im folgenden Code veranschaulicht.
string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;
Wenn Interceptorunterstützung vorhanden ist, interagiert der Kompilierungsprozess mit dem aufgeführten Typ in der oben beschriebenen Weise. Wenn keine Interceptorunterstützung vorhanden ist, wird die Anwendungseinstellung ignoriert und hat keine Auswirkungen.
Anforderungen
Namespace: System.Web.Compilation
Assembly: System.Web (in System.Web.dll)
.NET Framework-Versionen: 3.5, 2.0