piątek, 9 listopada 2012

[C#|Visual Studio] Partial methods

Partial classes to konstrukcja składniowa, umożliwiająca definiowanie jednej klasy w wielu plikach. Może to być przydatne, by rozdzielić prace nad jedną klasą na kilku developerów, lub by odseparować np. kod generowany od kodu pisanego przez programistę, np. WinForms. Kompilator zbiera wszystkie pliki w całość i kompiluje jako jedną klasę. Wymagane jest, by pliki znajdowały się w jednym assembly..

O ile idea partial classes wydaje się w miarę jasna, o tyle temat partial methods może wielu programistom wydawać się niejasny.

Kilka informacji na temat partial methods
  • mogą znajdować się tylko w partial classes lub partial structs
  • jedna część klasy zawiera jedynie sygnaturę, w drugiej zawarta jest definicja
  • definicja metody jest opcjonalna (w przypadku jej braku kompilator pominie wszystkie wywołania)
  • dzięki powyższym cechą mogą być luźnie stosowane do wprowadzania opcjonalnych funkcjonalności
  • definicja musi rozpoczynać się od słowa kluczowego partial, a metoda może zwracać jedynie void
  • są to metody prywatne (niejawnie)
  • mogą być statyczne, generyczne
Przykład użycia:

Pierwsza część definicji klasy (np. wygenerowana przez automat)


using System;

namespace partial_methods
{
    //simulates automatically generated code
    public partial class ClassAB
    {
        //implemented
        partial void PrintYourName();
        //not implemented
        partial void PrintSurname();

        public void Print()
        {
            Console.WriteLine("Hello");
            PrintYourName();
            PrintSurname();
        }
    }
}

Druga część (np. definiowana przez użytkownika)


using System;

namespace partial_methods
{
    //simulates user defined class
    public partial class ClassAB
    {
        private string _name;

        public ClassAB(string s)
        {
            _name = s;
        }
        partial void PrintYourName()
        {
            Console.WriteLine(_name);
        }
    }
}

Brak komentarzy:

Prześlij komentarz