Was ist der Zweck von Teilklassen?

8

Ich lese über partielle Klassen und zum Beispiel Ich verstehe den Grund, warum sie verwendet werden, wenn Visual Studio Windows Forms erstellt, ohne das auszuschließen

  

Wenn Sie an großen Projekten arbeiten und eine Klasse über separate Dateien verteilen   ermöglicht es mehreren Programmierern, gleichzeitig daran zu arbeiten

.

Später las ich dieses Beispiel und ich bemerkte das Die meisten Klassen werden als partiell deklariert. Warum?

    
enzom83 27.02.2012, 23:05
quelle

5 Antworten

5

Partielle Klassen ermöglichen es, Code nicht nur zu den generierten Klassen hinzuzufügen, sondern auch optionale Funktionen zu implementieren.

Zum Beispiel kann Code generiert werden, der die Überprüfung der Eigenschaften durchführt (über IDataErrorInfo), aber die Validierung für jede Eigenschaft kann nicht zur Generierungszeit bestimmt werden. Die partielle Klasse ermöglicht dem Entwickler, die Validierung zu einem späteren Zeitpunkt festzulegen.

Die generierte Datei:

%Vor%

Die vom Entwickler implementierte Datei:

%Vor%     
Lukazoid 27.02.2012, 23:23
quelle
11

Eines der sehr guten Beispiele, in denen partielle Klassen nützlich sind, ist, wenn die Klasse automatisch von einem Werkzeug (wie VS) generiert wird und Sie die Funktionalität dieser Klasse erweitern können und nicht den Code verlieren, wenn das Werkzeug benötigt wird regeneriere seinen Code. Wenn Sie beispielsweise Visual Studio Entity Data Model Designer verwenden, werden die Entitäten (Klassen) als partielle generiert.

    
Tomek 27.02.2012 23:12
quelle
5

Wenn Sie eine große Klasse haben, kann es hilfreich sein, die Definition auf mehrere Quelldateien aufzuteilen.

Wenn Sie eine Klasse erweitern möchten, die beispielsweise aus einer T4-Vorlage oder einem ORM generiert wird, oder in einer Situation, in der Sie die ursprüngliche Quelldatei nicht ändern können oder sollten, können Sie a verwenden zusätzliche partielle Klassendefinition zum Hinzufügen neuer Funktionen, die nicht gelöscht werden, wenn die Vorlage oder ORM die ursprüngliche Klasse neu generiert.

Bearbeiten

Nur eine Beobachtung, aber Ihr Zitat:

  

Wenn Sie an großen Projekten arbeiten und eine Klasse über separate Dateien verteilen   ermöglicht es mehreren Programmierern, gleichzeitig daran zu arbeiten

Passt nicht gut zu mir, obwohl ich von MSDN komme. Wenn Sie ein ordentliches Quellcodeverwaltungssystem verwenden (wie TFS oder sogar svn), werden Zusammenführungen in Quelldateien, in denen jeder Entwickler an verschiedenen Methoden arbeitet, ziemlich gut verarbeitet. Zu sagen, dass die Verwendung partieller Klassen es mehreren Entwicklern erleichtert, an der gleichen Klasse zu arbeiten, könnte (und ich wage es wahrscheinlich auch) jemanden da draußen dazu ermutigen, jede Methode und Eigenschaft in jeder Klasse in ihrer Lösung in separate Quelldateien aufzuteilen. Das ist schlecht. Wirklich schlecht. Wie in, sollte-nach-vorne-wenn-verhandelt-Gehälter-mit-Neueinstellungen schlecht sein.

    
David Lively 27.02.2012 23:14
quelle
1

Eine praktische Anwendung besteht darin, dass Sie die partielle Klasse an mehr als einem Speicherort innerhalb des Bereichs des Namespace ändern können. Sie können eine Klasse aus Gründen der Lesbarkeit in mehrere Dateien aufteilen.

IE:
In HelloWorld.cs im Namensraum "Bleh"

%Vor%

In HelloWorld2.cs im Namensraum "Bleh"

%Vor%

Beide Klassen, die deklariert werden, repräsentieren in Wirklichkeit dasselbe, aber der Zweck bestand darin, die Klasse in Dateien aufzuteilen. Beide zusammen sehen tatsächlich so aus:

%Vor%

Weitere Informationen hier .

    
Spencer 27.02.2012 23:11
quelle
0

Da der von Ihnen gepostete Link bedeutet, dass Sie eine einzelne Klasse haben, die auf mehrere Dateien aufgeteilt ist, wird diese zur Kompilierungszeit in eine einzelne Klasse zusammengeführt.

wie für den anderen Link, den Sie gepostet haben ... die partiellen Klassen sind auf diese Weise markiert, weil das Markup (aspx) eine vom Designer generierte Klasse hat, die Ihnen Zugriff auf die im Markup definierten Dinge gibt ...

Also, es gibt drei Dateien ... productlist.aspx, productlist.cs und productlist.designer.cs

productlist.aspx ist das Markup

productlist.cs ist die Teilklasse, die aus der Markup-Datei referenziert wird und Ihren Code enthält.

productlist.designer.cs ist die generierte partielle Klasse, die mit der .cs-Datei über

kombiniert wird     
Timmerz 27.02.2012 23:18
quelle

Tags und Links