Teilklassen sind eine Funktion von VB.NET, die fast überall verwendet wird, aber es wird nicht viel darüber geschrieben. Dies könnte daran liegen, dass es noch nicht viele offensichtliche "Entwickler" -Anwendungen dafür gibt. Die hauptsächliche Verwendung liegt in der Art und Weise, wie ASP.NET- und VB.NET-Lösungen in Visual Studio erstellt werden. Hierbei handelt es sich um eine der Funktionen, die normalerweise "verborgen" sind..
Eine Teilklasse ist einfach eine Klassendefinition, die in mehrere physische Dateien aufgeteilt ist. Teilklassen machen für den Compiler keinen Unterschied, da alle Dateien, aus denen eine Klasse besteht, für den Compiler einfach zu einer einzigen Entität zusammengeführt werden. Da die Klassen nur zusammengeführt und kompiliert werden, können Sie keine Sprachen mischen. Das heißt, Sie können nicht eine Teilklasse in C # und eine andere in VB haben. Sie können auch keine Assemblys mit Teilklassen überspannen. Sie müssen alle in derselben Versammlung sein.
Dies wird häufig von Visual Studio selbst verwendet, insbesondere auf Webseiten, bei denen es sich um ein Schlüsselkonzept in "Code Behind" -Dateien handelt. Wir werden sehen, wie dies in einem Visual Studio funktioniert, aber zu verstehen, was sich in Visual Studio 2005 geändert hat, als es eingeführt wurde, ist ein guter Ausgangspunkt.
In Visual Studio 2003 befand sich der "versteckte" Code für eine Windows-Anwendung in einem Abschnitt mit der Bezeichnung "Von Windows Form Designer generierter Code". Aber es war immer noch alles in derselben Datei und es war einfach, den Code in der Region anzuzeigen und zu ändern. Alle des Codes steht Ihrer Anwendung in .NET zur Verfügung. Da es sich jedoch um Code handelt, mit dem Sie sich niemals anlegen sollten, wurde er in dieser verborgenen Region aufbewahrt. (Regionen können weiterhin für Ihren eigenen Code verwendet werden, aber Visual Studio verwendet sie nicht mehr.)
In Visual Studio 2005 (Framework 2.0) hat Microsoft ungefähr dasselbe getan, aber den Code an einer anderen Stelle versteckt: einer Teilklasse in einer separaten Datei. Sie können dies unten in der Abbildung sehen:
--------
Klicken Sie hier, um die Abbildung anzuzeigen
Klicken Sie in Ihrem Browser auf die Schaltfläche Zurück, um zurückzukehren
--------
Einer der Syntaxunterschiede zwischen Visual Basic und C # besteht derzeit darin, dass C # dies erfordert alle Teilklassen werden mit dem Schlüsselwort qualifiziert Teilweise aber VB nicht. Ihr Hauptformular in VB.NET hat keine speziellen Qualifikationsmerkmale. Die Standardklassenanweisung für eine leere Windows-Anwendung sieht mit C # folgendermaßen aus:
öffentliche Teilklasse Form1: Form
Die Designentscheidungen von Microsoft in Bezug auf solche Dinge sind interessant. Als Paul Vick, der VB-Designer von Microsoft, in seinem Blog über diese Designauswahl schrieb Panopticon Central, Die Debatte darüber in den Kommentaren ging für Seiten und Seiten weiter.
Sehen wir uns auf der nächsten Seite an, wie das alles mit echtem Code funktioniert.
Auf der vorherigen Seite wurde das Konzept der Teilklassen erläutert. Auf dieser Seite konvertieren wir eine einzelne Klasse in zwei Teilklassen.
Hier ist eine Beispielklasse mit einer Methode und einer Eigenschaft in einem VB.NET-Projekt
Öffentliche Klasse CombinedClass Private m_Property1 Als Zeichenfolge Public Sub New (ByVal Value As String) m_Property1 = Wert End Sub Public Sub Method1 () MessageBox.Show (m_Property1) End Sub Property Property1 () Als Zeichenfolge Get Return m_Property1 End Get Set (ByVal value As String) m_Property1 = value End Setzt die End-Eigenschaft End Class
Diese Klasse kann mit folgendem Code aufgerufen werden (z. B. im Click-Ereigniscode für ein Button-Objekt):
Dim ClassInstance As New _ CombinedClass ("Informationen zu Visual Basic-Teilklassen") ClassInstance.Method1 ()
Wir können die Eigenschaften und Methoden der Klasse in verschiedene physische Dateien unterteilen, indem wir dem Projekt zwei neue Klassendateien hinzufügen. Nennen Sie die erste physische Datei Partial.methods.vb und nenne den zweiten Partial.properties.vb. Die physischen Dateinamen müssen unterschiedlich sein, die Teilklassennamen müssen jedoch identisch sein, damit Visual Basic sie beim Kompilieren des Codes zusammenführen kann.
Es ist keine Syntaxanforderung, aber die meisten Programmierer folgen dem Beispiel in Visual Studio, in dem "gepunktete" Namen für diese Klassen verwendet werden. Beispielsweise verwendet Visual Studio den Standardnamen Form1.Designer.vb für die Teilklasse für ein Windows-Formular. Denken Sie daran, das Schlüsselwort Partial für jede Klasse hinzuzufügen und den internen Klassennamen (nicht den Dateinamen) in denselben Namen zu ändern. Ich habe den internen Klassennamen verwendet: Teilklasse.
Die folgende Abbildung zeigt den gesamten Code für das Beispiel und den Code in Aktion.
--------
Klicken Sie hier, um die Abbildung anzuzeigen
Klicken Sie in Ihrem Browser auf die Schaltfläche Zurück, um zurückzukehren
--------
Visual Studio "verbirgt" Teilklassen wie Form1.Designer.vb. Auf der nächsten Seite erfahren Sie, wie Sie dies mit den soeben erstellten Teilklassen tun können.
Die vorherigen Seiten erläutern das Konzept von Teilklassen und zeigen, wie diese codiert werden. Microsoft verwendet jedoch einen weiteren Trick mit den von Visual Studio generierten Teilklassen. Einer der Gründe für ihre Verwendung ist die Trennung der Anwendungslogik vom Code der Benutzeroberfläche. In einem großen Projekt können diese beiden Codetypen sogar von verschiedenen Teams erstellt werden. Wenn sie sich in verschiedenen Dateien befinden, können sie mit viel mehr Flexibilität erstellt und aktualisiert werden. Microsoft geht jedoch noch einen Schritt weiter und blendet den Teilcode auch im Projektmappen-Explorer aus. Angenommen, wir wollten die Teilklassen für Methoden und Eigenschaften in diesem Projekt ausblenden? Es gibt einen Weg, aber es ist nicht offensichtlich und Microsoft sagt Ihnen nicht, wie.
Einer der Gründe, warum die von Microsoft empfohlenen Teilklassen nicht verwendet werden, ist, dass sie in Visual Studio noch nicht wirklich gut unterstützt werden. Um die soeben erstellten Klassen Partial.methods.vb und Partial.properties.vb auszublenden, müssen Sie beispielsweise die Einstellungen in ändern vbproj Datei. Dies ist eine XML-Datei, die wird nicht einmal angezeigt im Projektmappen-Explorer. Sie können es mit Windows Explorer zusammen mit Ihren anderen Dateien finden. In der folgenden Abbildung ist eine vbproj-Datei dargestellt.
--------
Klicken Sie hier, um die Abbildung anzuzeigen
Klicken Sie in Ihrem Browser auf die Schaltfläche Zurück, um zurückzukehren
--------
Dazu fügen wir eine "root" -Klasse hinzu, die vollständig leer ist (nur der Class-Header und die End Class-Anweisung bleiben übrig), und machen beide Teilklassen davon abhängig. Fügen Sie also eine weitere Klasse mit dem Namen hinzu PartialClassRoot.vb Ändern Sie den internen Namen erneut in PartialClass, damit er mit den ersten beiden übereinstimmt. Diesmal habe ich nicht hat das Partial-Schlüsselwort verwendet, nur um der Art und Weise zu entsprechen, wie Visual Studio es ausführt.
Hier sind einige XML-Kenntnisse von Vorteil. Da diese Datei manuell aktualisiert werden muss, muss die XML-Syntax stimmen. Sie können die Datei in einem beliebigen ASCII-Texteditor bearbeiten - Notepad funktioniert einwandfrei - oder in einem XML-Editor. Es stellt sich heraus, dass Sie in Visual Studio eine großartige haben, und das ist, was in der folgenden Abbildung gezeigt wird. Sie können die vbproj-Datei jedoch nicht gleichzeitig mit der Bearbeitung des Projekts bearbeiten, in dem sie sich befindet. Schließen Sie das Projekt, und öffnen Sie nur die vbproj-Datei. Die Datei sollte im Bearbeitungsfenster angezeigt werden (siehe Abbildung unten).
(Beachten Sie das Kompilieren Elemente für jede Klasse. Abhängig von Unterelemente müssen genau wie in der folgenden Abbildung gezeigt hinzugefügt werden. Diese Illustration wurde in VB 2005 erstellt, aber auch in VB 2008 getestet.)
--------
Klicken Sie hier, um die Abbildung anzuzeigen
Klicken Sie in Ihrem Browser auf die Schaltfläche Zurück, um zurückzukehren
--------
Für viele von uns ist es wahrscheinlich genug zu wissen, dass es Teilklassen gibt, nur damit wir wissen, was sie sind, wenn wir versuchen, einen Fehler in der Zukunft aufzuspüren. Für die Entwicklung großer und komplexer Systeme könnten sie ein kleines Wunder sein, da sie dazu beitragen können, Code auf eine Weise zu organisieren, die zuvor unmöglich gewesen wäre. (Sie können auch Teilstrukturen und Teilschnittstellen haben!) Einige Leute sind jedoch zu dem Schluss gekommen, dass Microsoft sie nur aus internen Gründen erfunden hat - damit die Codegenerierung besser funktioniert. Der Autor Paul Kimmel ging sogar so weit, dass er vorschlug, Microsoft habe tatsächlich Teilklassen erstellt, um ihre Kosten zu senken, indem es einfacher wurde, Entwicklungsarbeiten auf der ganzen Welt auszulagern.
Könnte sein. So etwas könnten sie tun.