C# 3.0 – Partial Methoden

Partielle Methoden sind Hooks die Klassen Designer bereitstellen. Entwickler können diese gegebenenfalls implementieren. Wird die Methode nicht vom Entwickler implementiert entfernt der Compiler die Signatur. Partielle Methoden müssen folgende Bedingungen erfüllen:

  • Partielle Methoden müssen in partiellen Typen implementiert werden.
  • Die Methode muss void als Rückgabetyp verwenden.
  • Es sind keine Modifizierer oder Attribute zulässig.

Partielle Methoden eignen sich hervorragend für automatisiert erzeugten Code.

Der automatisiert erzeugte Code:

   1:      public partial class Person
   2:      {
   3:          private string firstname;
   4:          public string Firstname
   5:          {
   6:              get { return firstname; }
   7:              set 
   8:              {
   9:                  //Partial Method
  10:                  OnBeforeFirstnameChange(value);
  11:   
  12:                  firstname = value;
  13:                  //Partial Method
  14:                  OnAfterFirstnameChange(firstname);
  15:              }
  16:          }
  17:   
  18:          partial void OnBeforeFirstnameChange(string name);
  19:          partial void OnAfterFirstnameChange(string name);
  20:      }

Wenn wir als Entwickler die beiden Methoden OnBeforeFirstnameChange und OnAfterFirstnameChange nicht gesondert implementieren wird uns der Compiler die Signaturen entfernen. Kontrollieren kann man dies mit einem Reflector wie z.B. mit Lutz Roeder’s Reflector.

clip_image001

Im nächsten Schritt implementieren wir die partielle Methode OnBeforeFirstnameChange.

   1:      public partial class  Person
   2:      {
   3:          partial void OnBeforeFirstnameChange(string name)
   4:          {
   5:              Debug.WriteLine("Firstname: " + name);
   6:          }
   7:      }

Anschließend kompilieren wir den Code erneut und betrachten das Ergebnis im Reflector.

clip_image001[7]

Wie erwartet ist nur die Signatur für die Methode OnAfterFirstnameChange entfernt worden.