Pisanie Extension Methods for SharePoint
Rozszerzenie metody są ogromne realizacja budowy rozszerzające pozyskiwania i realizacji modularyzacji fragmentów kodu, pożyczki się również do wypełniania luk, które mogą być obecne w zamkniętych API, takich jak ta, która stanowi SharePoint. Często nie może być metodą, która jest szczególnie pożądane w szczególności rodzaj, jednak możliwości świadczenia nie są dostępne w API dostarczane z powodu zamykania i innych modyfikacji. Korzystanie z metody rozszerzeń możliwe jest ominięcie tego ograniczenia zachowując czyste życie, że można uniknąć głębokich odniesień drzewo dziedziczenia.
Rozszerzenie metody są coraz bardziej ważne podczas pracy z kodem SharePoint, ponieważ większość obiektów, które normalnie mandatu dostosowania zachowania, na przykład na SPList typów, ozdobiony jest zamknięte dostęp zmodyfikowane w ten sposób niweczy możliwości dziedziczenia. Jest to najbardziej widoczne podczas pracy z przykładów przedmiotów, które poza pewne ramy (tj. TypeMock) wymagają nieuszczelnionej klasy i konstruktora domyślnego.
W przeciwieństwie do zapewnienia definicja metody w klasie, metoda jest po prostu rozszerzenie określone przez stowarzyszenia i zawarte w oddzielnych klas statycznych wspierane przez częściowe klasy konstrukcji (czyli musi istnieć w przestrzeni nazw w obecnym zakresie). Sama metoda jest wywoływana przy użyciu składni metody instancji, pozwalając na poziomie znajomości kodu konstrukcji. Chociaż metoda jest statyczna, można nazwać tylko w przypadkach określonych w parametrach. W istocie, metoda rozszerzenie umożliwia dodanie metody do innej klasy, więc oświadczył, jakby była jej częścią.
W celu zmniejszenia niejasności metody ze względu na rozszerzenia metody zdefiniowane są tylko nazwa metody, ważne jest uwzględnienie odpowiednich konwencji nazewnictwa (w rzeczywistości, jeśli podpis jest taki sam rozszerzenia będą ignorowane!). Ponadto, rodzaje SharePoint, że zostanie przedłużona są oczywiście przedmiotem rewizji API, które są publikowane przez MSFT. Dlatego też, gdy zmiany API, nie może być pożądanego poziomu kompatybilności wstecznej.
Składnia metody rozszerzenia jest bardzo prosta (ważne jest, aby pamiętać, że VB.NET wymaga rozszerzenia atrybutów, które zostaną określone, C # nie. Jednakże w języku C #, jesteśmy zmuszeni do tworzenia kopii obiektu / return value więc wyrównuje it out!).
- Extensions public static class Extensions
- (
- this Type type ) public static Typ doSomething (tego typu typ)
- (
- / / Let's Get coś się dzieje!
-
)
- )
Widać, że w statycznej klasie Rozszerzenia metody doSomething ma własnego parametr ozdobione modyfikator słów kluczowych, aby wskazać typ, do którego ta metoda będzie przedłużyć. Tak na przykład podczas pisania metod przedłużenia przedłużenia SPList klasy (bez dodatkowych parametrów), nasza klasa to tak:
- Extensions public static class Extensions
- (
- this SPList list ) public static Typ doSomething (ten SPList list)
- (
- / / Let's Get coś się dzieje!
- )
- )
Ale to nie robi wiele, więc weźmy przykład bardziej pragmatyczne.
W poniżej, jestem przy założeniu, że w skardze na SPList przedmiotów, będę się często zamianom obecną SPListItem biblioteka w porządku malejącym według daty modyfikacji, a następnie pobiera 5 ostatnich elementów.
W HarvestLastFive jest zauważalne, że jestem przede wszystkim określenia typu docelowej, używając tego słowa kluczowego z SPList typu. Po jestem budynku SPListItemCollection z SPList.Items, które następnie wykorzystuje LINQ OrderByDescending metody w połączeniu z nieruchomości SPBuiltInFieldId.Modified do obsługi zamówień. Wreszcie, Take zwraca pierwsze 5 pozycji z zmodyfikowano kolekcji. Po prostu chciałem zamianom (wiele rozszerzeń używam codziennie korzystać z takich modyfikatorów LINQ biblioteka do większego wsparcia manipulacji) można by po prostu wykupić Take oświadczenie.
- Extensions public static class Extensions
- (
- this SPList typeToTarget ) public static IEnumerable <SPListItem> HarvestLastFive (to SPList typeToTarget)
- (
- próbować
- (
- Biblioteka SPListItemCollection = typeToTarget. Przedmioty;
- x => x [ SPBuiltInFieldId. Modified ] ) . Take ( 5 ) ; var finalCollection = tempCollection. OrderByDescending (x => x [SPBuiltInFieldId. modyfikacja]). Take (5);
- finalCollection powrotu;
- )
- Exception exception ) catch (Exception exception)
- (
- )
-
return null;
- )
- )
Możesz zobaczyć w członków klasy Rozszerzenia, że HarvestLastFive metodę inną ikonę (little strzałkę w dół), który określa ją jako metodę rozszerzenia.

Korzystanie z metody klasy analgous z dostępnych metod na tego rodzaju. Na przykład, HarvestLastFive metoda przybiera postać:
- public void TestingExtensionMethod ()
- (
- . Lists [ "My List" ] ; Lista SPList = SPContext. Current. Sieci Web. Listy [ "My List"];
- ; var biblioteka = listy. HarvestLastFive ();
- / / Do whatever you want!
- )
W ramach programu Visual Studio, ta metoda jest oznaczone jako metoda przedłużenia na etykietce z prefiksem (rozszerzenie).

Powinno to zapewnić wystarczający stać się dzieje metod rozszerzenia. Będę delegowania niektórych moich wspólnych metod przedłużenia, że mogę korzystać z SharePoint krótko, jak to miało być wprowadzenie.
4 Komentarze »
RSS dla komentarzy do tego wpisu. TrackBack URL































[...] Ten post jest również dlatego, że ludzie mówili wymaga więcej jednorazowych metodę rozszerzenia (nie tutaj) np., że wystukał w SharePoint. Tyranów! Chociaż robię przegląd kodu, który wykorzystanego w niektórych segmentach kalendarza SharePoint Znalazłem ten problem wymyślić. Podczas przekazywania parametrów daty w SPUtility.FormatDate będzie oczekiwać, że będzie w UTC, co w moim konkretnym przypadku, jak również przyjmuję innych, jest nieprawdziwa, ponieważ był przechowywany jako czas lokalny. To można pokonać przy użyciu metod dostarczonych przez klasę SPWeb.RegionalSettings.TimeZone, która pozwoli właściwej analizy wystąpić w obiektach SPWeb wspieranie odpowiednich konwersji. [...]
Pingback SharePoint Shelter »Blog Archive» pamiętać o SPUtility.FormatDate UTC (rozszerzenie metody) - 29 września 2008 @ 11:17
[...] Interesante artículo de Adam Buenz temat jako construir métodos de extensión dla SharePoint. [...]
Pingback WSS 3.0 i Moss: Recopilatorio de enlaces interesantes (XXII)! «Pasión por la tecnología ... - 4 listopada 2008 @ 8:51 am
[...] Biorąc to krok dalej i przy użyciu techniki, że Adam Buenz blogu na temat pisania Extension Methods for SharePoint to włączone SPList klasy w taki sposób: [...]
Pingback ISEA (tylko dla użytkowników iPoda i iTouch) - 1 lutego 2009 @ 12:57
[...] Metoda jest rozszerzenie SPList obiekt pisania rozszerzeń Methods. Opisane są tutaj wiele dzięki Adam Buenz Opublikowany 09 października 2009, 04:20 PM by Nadine Storandt Filed under: MOSS, [...]
Pingback SPList ma domyślny adres Nieruchomości - Nadine postów - developers.de - 9 października 2009 @ 7:35 am