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.


image

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”.

Linq i metody rozszerzające
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”.

Wykazanie , że metoda rozszerzająca działa i może być użytaWykazanie , że metoda rozszerzająca działa i może być użyta

Wykazanie , że metoda rozszerzająca działa i może być użyta


To wszystko na dziś.Uśmiech. 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.