Linq MethodCzasami do naszego kodu jest potrzebna nowa funkcja do danego typu wartości, która ma nie oddziaływać w żaden sposób na już istniejący kod.
A z drugiej strony pisanie klasy statycznej i użycie jej w kodzie w następujący sposób wydłuża niepotrzebnie kod.
Na przykład powiedzmy, że chcę dodać nową funkcje dla typu “int” , która zwróci potęgę tej liczby. Oczywiście to tylko przykład, ponieważ trzeba byłoby pomyśleć o granicy wartościowej typu “int”.
Na szczęście, od kiedy mamy LINQ w C# mam do dyspozycji metody rozszerzające. Zauważ, że dla kolekcji “int-ów” , która dziedziczy po interface IEnumerable, w tym wypadku jest to tablica, mam do dyspozycji np. metodę rozszerzającą “Sum”.
Metoda ta zwraca sumę wszystkich wartości liczbowych z kolekcji. Oczywiście dzięki LINQ mamy do dyspozycji wiele więcej metod, które operują na kolekcjach danych i je modyfikują.
Teraz pytanie, jak stworzyć swoją własną metodę rozszerzającą. By to zrobić trzeba stworzyć klasę statyczną wraz z metodą, która ma być też statyczna i aby stała się metodą rozszerzającą musi pobierać parametr ze słowem kluczowym “this”. W ten sposób zaznaczamy, że metoda jest rozszerzeniem dla typu “int”.
Wygląda to tak.
static class MyTool
{
public static int Power(this int i)
{
return i * i;
}
}
Teraz możemy używać metody rozszerzającej pod warunkiem, że nie mamy problemów z przestrzeniami nazw. Jeśli są, to trzeba dodać przestrzeń nazw z klasy (za pomocą metody using), która posiada te metody rozszerzające. W tym wypadku to klasa “MyTool”.
To wszystko na dziś.. Chociaż jeszcze przydałoby się dodać mały opis do naszej metody dla Visual Studio 2010. Więcej informacji o tym w następnym wpisie.