Typy wyliczeniowy są używane do określenia jednej wartości z góry określonego zbioru. Dzięki nim możemy ułatwić sobie tworzenie kodu poprzez nadanie nazwy dla wartości, którą później używamy. Nazwa enuma musi spełniać rygory składni takich języków jak C#, dlatego potrzebujemy mechanizmu, który wyświetli ładny napisu w interfejsie użytkownika. W tym wpisie drogi czytelniku, pokaże Ci jak to zrobić małym nakładem pracy oraz przy okazji wspierać wiele języków. Zob...
To już ostatni post z rodziny timer-owatych. Omówione zostaną dwa proste operatory. Ale co ważniejsze, zaimplementujemy kolejne dwa własne. Rx oparty jest o rozszerzone metody, dlatego bardzo łatwo jest dodać kolejne potrzebne "stworki".
Architektura 2428 dni, 5 godzin, 59 minut temu 42 źrodło rozwiń
dspannonymous methods, annonymous types, extension methods, generics, LambdaExpressions, LINQ, object initializer, varkubaGdzie są te fjuczery? Tyle postów pisałem tylko o rzeczach, na których LINQ został zbudowany. Ale gdzie one są? Tyle dodatków do języka dla jednego prostego zapytania?
Daj się poznać 2017 2704 dni, 17 godzin, 38 minut temu 94 źrodło rozwiń
IsNullOrEmpty(„”) vs „”.IsNullOrEmpty W metodach rozszerzających jest jeszcze jedna ciekawa rzecz, o której nie wspomniałem w poprzednim poście. Oczywiście nie jest to kamień milowy w programowaniu, ale może ułatwić czytelność kodu. Znacie metodę String.IsNullOrEmpty()? Zastanawialiście się kiedyś dlaczego jest zadeklarowana jako statyczna w klasie String, a nie jako metoda instancyjna? Która linijka jest bardziej czytelna?string test = "something"; test = null;
Daj się poznać 2017 2737 dni, 3 godziny, 38 minut temu 145 źrodło rozwiń
Czasem może nas spotkać sytuacja, że bardzo potrzebujemy stworzyć zapytanie do Entity Framework, które musi dynamicznie reagować na nasze wymagania i w jednym konkretnym przypadku będzie potrzebowało dodatkowego Where(). Oczywiście, możemy napisać oddzielne zapytania i warunek, ale istnieje odrobinę sprytniejszy sposób.
Sztuka programowania 3025 dni, 7 godzin, 38 minut temu 287 źrodło rozwiń
In one of my previous posts I’ve told about my feelings for the repository pattern. Complaining about something is one thing (please, don’t even try to tell me, that you have never seen some piece of code, that made you cry like a baby), however, if we want to (pretend to) be professionalists, it is very important to come up with some ideas in order to solve the given problem (at least partially). In this post, I’ll present to you one of my solutions to the commonly misused repository pattern.
Architektura 3138 dni, 17 godzin, 7 minut temu 133 źrodło rozwiń
Request pipeline w ASP.NET 5 działa na zasadzie middleware, co to znaczy? Dla mnie najprościej było to zrozumieć poprzez analogię do głuchego telefonu, zabawy w którą chyba każdy z nas się bawił :)Gluchy telefon Nie jestem pewny jakie są prawa autorskie tego obrazka, znalezione w sieci bez żadnego info...
Metody rozszerzające i ich ciekawa właściwość...
Sztuka programowania 3749 dni, 18 godzin, 59 minut temu 416 źrodło rozwiń
Extension Methods – metody rozszerzające, które pozwalają na wykorzystanie raz napisanego kodu w wielu miejscach bez naginania zasady DRY (Don’t Repeat Yourself). Metoda taka musi być statyczna...
Sztuka programowania 3846 dni, 59 minut temu 238 źrodło rozwiń
Extension Methods można wykorzystać nie tylko do dodawania metod do istniejących klas, ale także jako najprostszy mechanizm mapujący. Nie musimy tworzyć całej biblioteki do mapowania, wystarczy dodać do klasy odpowiednią metodę np. Map.
Dzięki temu mechanizmowi można tak jakby dodać metodę do klasy bez modyfikacji tej klasy (np. do już skompilowanej dll’ki). Implementacja krok po kroku...
Mimo, że późno to niedziela jeszcze nie minęła więc kolejny niedzielny tip – prosta funkcja wyszukująca wśród dzieci danej kontrolki, dzieci o danym typie...
Silverlight 4505 dni, 8 godzin, 28 minut temu 131 źrodło rozwiń
Może nam się od czasu do czasu zdarzyć, że chcemy z kodu przełączać atrybut Visibility danego obiektu wyświetlanego na ekranie, np. na kliknięcie przycisku...
Silverlight 4518 dni, 19 godzin, 29 minut temu 155 źrodło rozwiń
autor: Czy korzystacie z refleksji w .NET? Czy zdarzyło wam się przeglądać/ustawiać właściwości klas poprzez refleksje? Czy korzystacie z atrybutów? Mnie często i równie często zdarzało mi się ponownie szukać kodu, który rozwiązałby mój problem, dlatego dla wygody poniżej zamieszczam różne funkcje rozszerzające, które realizują wspomniane wyżej zadania. (być może komuś jeszcze się one przydadzą).
Za czasów .NETa 2.0, dość uciążliwym mógł być brak prostej możliwości rozszerzania już istniejących klas. Zespół MS postanowił ten sposób rozwiązać, tworząc właśnie “Extension methods”. I tak, .NET 3.5 oferuje nam całkiem przystępny mechanizm pozwalający dodawać nowe funkcjonalności do już istniejących typów. Zasada działania Działa to wszystko zadziwiająco łatwo. Najpierw odrobina kodu, zamienimy stringa na tabli...
W .NET 4.0 dodano nowe metody TimeSpan.ToString() dające możliwość formatowania czasu podczas wyświetlania...
Mając wartość enuma w postaci napisowej, pobraną na ten przykład z bazy, bardzo łatwo jest z powrotem sparsować ją do właściwego dla aplikacji typu: 1: public enum MyEnum 2: { 3: FirstVal, 4: SecondVal 5: } 6: //... 7: (MyEnum)Enum.Parse(typeof(MyEnum), "FirstVal");
Ostatnio w jednym z projektów, w których brałem udział dostawałem w niektórych miejscach kolekcję obiektów zaś w innych, parametrami metody były same obiekty. Potrzebowałem, więc czegoś generycznego by móc je sobie konwertować. W tym celu szybko naskrobałem extension method...
Ostatnio natknąłem się na coś, co... blew my mind (wydymało mi umysł?). Bardzo krótko wspomniał o tym Bartek Pampuch na ostatnim MTS i utkwiło mi w pamięci, ale dopiero kilka dni temu niechcący przyjrzałem się "owemu czemuś" bliżej. Owo cuś to biblioteka Reactive Extensions (Rx) implementująca założenia programowania reaktywnego by Microsoft.
Oto praktyczny przykład użycia wyrażeń lambda i metod rozszerzających, który lekko i prymitywnie "ociera się" o programowanie aspektowe i imituje jego podstawowe założenia: