none
(c#) Kann mir jemand das erklären? Splitten einer Klassendefinition mit partial RRS feed

Antworten

  • Hi,

    was genau verstehst Du denn daran nicht? Stell doch bitte genaue Fragen, dann kann man auch genau darauf antworten.

    Falls dir ein praxisnaher Anwendunszweck fehlt:

    Stell dir vor, ein Programm erstellt aus einer Definition X automatisiert eine Codedatei. Der Entwickler darf und muss diese Klasse aber nachträglich ändern. Wenn der Generator die Codedatei neu erzeugt müsste er nun aufpassen, dass er sämtliche Änderungen nicht überschreibt. Das ist aber in der Regel nicht möglich. Daher erstellt der Generator dann seine partielle Klasse in Datei1.cs und der Entwickler seinen Teil in Datei2.cs.

    Das Prinzip wendet Visual Studio an vielen Stellen an. Schau dir einfach mal die *.designer.cs Dateien an. Das sind auch automatisch generierte Klassen bzw. Dateien.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 2. Dezember 2014 19:19
    Moderator
  • Hallo,
    stelle dir mal vor du hast eine Klasse mit 5000 Codezeilen. Manchmal wäre es dann einfacher wenn man den Quellcode einfach in 2 Klassen aufteilen könnte. Das geht mit Hilfe von partial.

    Du kannst einfach die Klassendeklaration in 2 Codedateien schreiben, wie in dem Quellcode auf deinem Bild. Normalerweise würde der Compiler einen Fehler melden, durch partial weiß er jedoch das es sich um die selbe Klasse handelt, die darum auch zusammen geführt wird.

    Das heißt also konkret, das du aus einer Klasse MyType

    public class MyType{
      public void DoSome1(){}
      public void DoSome2(){}
    }

    2 einzelne Teilklassen in verschiedenen *.cs-Dateien machen kannst:

    public partial class MyType{
      public void DoSome1(){}
    }
    public partial class MyType{
      public void DoSome2(){}
    }

    Der Compiler würde nun beim Erstellen der Anwendung zunächst wieder die obere Schreibweise wiederherstellen (dein Quellcode wird dadurch aber nicht geändert ;) ) und dann erst die Kalsse kompilieren.

    Eigentlich habe ich partial bisher nur bei GUI-Projekten im Einsatz gesehen. In WinForms- und WPF sind die Fenster Klassen jeweils mit partial gekennzeichnet, weil der Designer entweder das Design in C# Code in einer 2 Datei erstellt (WinForms) oder weil es eine "Verbinder-Klasse" (wie in WPF) gibt.


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 2. Dezember 2014 19:25
    Moderator

Alle Antworten

  • Hi,

    was genau verstehst Du denn daran nicht? Stell doch bitte genaue Fragen, dann kann man auch genau darauf antworten.

    Falls dir ein praxisnaher Anwendunszweck fehlt:

    Stell dir vor, ein Programm erstellt aus einer Definition X automatisiert eine Codedatei. Der Entwickler darf und muss diese Klasse aber nachträglich ändern. Wenn der Generator die Codedatei neu erzeugt müsste er nun aufpassen, dass er sämtliche Änderungen nicht überschreibt. Das ist aber in der Regel nicht möglich. Daher erstellt der Generator dann seine partielle Klasse in Datei1.cs und der Entwickler seinen Teil in Datei2.cs.

    Das Prinzip wendet Visual Studio an vielen Stellen an. Schau dir einfach mal die *.designer.cs Dateien an. Das sind auch automatisch generierte Klassen bzw. Dateien.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 2. Dezember 2014 19:19
    Moderator
  • Hallo,
    stelle dir mal vor du hast eine Klasse mit 5000 Codezeilen. Manchmal wäre es dann einfacher wenn man den Quellcode einfach in 2 Klassen aufteilen könnte. Das geht mit Hilfe von partial.

    Du kannst einfach die Klassendeklaration in 2 Codedateien schreiben, wie in dem Quellcode auf deinem Bild. Normalerweise würde der Compiler einen Fehler melden, durch partial weiß er jedoch das es sich um die selbe Klasse handelt, die darum auch zusammen geführt wird.

    Das heißt also konkret, das du aus einer Klasse MyType

    public class MyType{
      public void DoSome1(){}
      public void DoSome2(){}
    }

    2 einzelne Teilklassen in verschiedenen *.cs-Dateien machen kannst:

    public partial class MyType{
      public void DoSome1(){}
    }
    public partial class MyType{
      public void DoSome2(){}
    }

    Der Compiler würde nun beim Erstellen der Anwendung zunächst wieder die obere Schreibweise wiederherstellen (dein Quellcode wird dadurch aber nicht geändert ;) ) und dann erst die Kalsse kompilieren.

    Eigentlich habe ich partial bisher nur bei GUI-Projekten im Einsatz gesehen. In WinForms- und WPF sind die Fenster Klassen jeweils mit partial gekennzeichnet, weil der Designer entweder das Design in C# Code in einer 2 Datei erstellt (WinForms) oder weil es eine "Verbinder-Klasse" (wie in WPF) gibt.


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 2. Dezember 2014 19:25
    Moderator
  • Hallo,
    stelle dir mal vor du hast eine Klasse mit 5000 Codezeilen. Manchmal wäre es dann einfacher wenn man den Quellcode einfach in 2 Klassen aufteilen könnte. Das geht mit Hilfe von partial.

    Du kannst einfach die Klassendeklaration in 2 Codedateien schreiben, wie in dem Quellcode auf deinem Bild. Normalerweise würde der Compiler einen Fehler melden, durch partial weiß er jedoch das es sich um die selbe Klasse handelt, die darum auch zusammen geführt wird.

    Das heißt also konkret, das du aus einer Klasse MyType

    public class MyType{
      public void DoSome1(){}
      public void DoSome2(){}
    }

    2 einzelne Teilklassen in verschiedenen *.cs-Dateien machen kannst:

    public partial class MyType{
      public void DoSome1(){}
    }
    public partial class MyType{
      public void DoSome2(){}
    }

    Der Compiler würde nun beim Erstellen der Anwendung zunächst wieder die obere Schreibweise wiederherstellen (dein Quellcode wird dadurch aber nicht geändert ;) ) und dann erst die Kalsse kompilieren.

    Eigentlich habe ich partial bisher nur bei GUI-Projekten im Einsatz gesehen. In WinForms- und WPF sind die Fenster Klassen jeweils mit partial gekennzeichnet, weil der Designer entweder das Design in C# Code in einer 2 Datei erstellt (WinForms) oder weil es eine "Verbinder-Klasse" (wie in WPF) gibt.


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Vielen Dank. Ich hab es jetzt verstanden
    Mittwoch, 3. Dezember 2014 15:50
  • Hallo schuayb Kazrabatli,

    Wenn ein oder mehrere Forumbeiträge Deine Frage beantwortet haben, kannst Du sie entsprechend markieren. Dadurch werden künftige Leser des Threads leichter auf die Lösung kommen.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 4. Dezember 2014 07:31
    Administrator