ControlBuilderInterceptor-Klasse
Mit der ControlBuilderInterceptor
-Klasse kann der Kompilierungsprozess angepasst oder gesteuert werden.
Syntax
internal class ControlBuilderInterceptor
Warnung
Die ControlBuilderInterceptor
Klasse ist intern und sollte nicht direkt in Ihrem Code verwendet werden.
Wie im Abschnitt "Hinweise" beschrieben, kann das Vorhandensein dieses Typs überprüft werden, um festzustellen, ob die Unterstützung des Interceptortyps vorhanden ist. Microsoft unterstützt unter keinen Umständen eine andere Verwendung dieser Klasse in einer Produktionsanwendung.
Bemerkungen
In .NET Framework 2.0 und .NET Framework 3.5 August 2020 Updates Unterstützung für die Verwendung eines Interceptor-Typs zum Anpassen oder Steuern des Kompilierungsprozesses hinzugefügt. Sie können ermitteln, ob diese Unterstützung vorhanden ist, indem Sie Type.GetType() verwenden, um das Vorhandensein des ControlBuilderInterceptor
Typs zu überprüfen, wie im folgenden Code gezeigt.
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, ist die Interceptorunterstützung vorhanden. Wenn der Rückgabewert null
ist oder eine Ausnahme ausgelöst wird, wurden die Updates vom August 2020 nicht installiert, und die Interceptor-Unterstützung ist nicht vorhanden.
Wenn die Interceptor-Unterstützung vorhanden ist, können Sie einen Interceptortyp schreiben und registrieren, der mit dem Kompilierungsprozess auf genau die gleiche 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:
- Verfügt über einen öffentlichen, parameterlosen Konstruktor.
- Enthält ö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 ASP.NET Anwendungseinstellungen (<appSettings>
). Diese Anwendungseinstellung muss auf Ihrem Computer oder ihrer Anwendung web.config Datei aufgeführt werden. Geben Sie den Interceptortyp mithilfe des assemblyqualifizierten Typnamens an. Das folgende Beispiel zeigt, wie ein Interceptortyp namens Fabrikam.Interceptor
registriert wird.
<configuration>
...
<appSettings>
...
<add key="aspnet:20ControlBuilderInterceptor"
value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
</appSettings>
</configuration>
Um den assemblyqualifizierten Namen eines Typs abzurufen, verwenden Sie die Type.AssemblyQualifiedName-Eigenschaft, wie im folgenden Code veranschaulicht.
string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;
Wenn die Interceptor-Unterstützung vorhanden ist, interagiert der Kompilierungsprozess mit dem aufgelisteten Typ in der oben beschriebenen Weise. Wenn die Interceptorunterstützung nicht vorhanden ist, wird die Anwendungseinstellung ignoriert und hat keine Auswirkung.
Anforderungen
Namespace: System.Web.Compilation
Assembly: System.Web (in System.Web.dll)
.NET Framework-Versionen: 3.5, 2.0