Have you ever seen these mysterious ‘in’ and ‘out’ keywords in generic interfaces’ definitions? If so, you’ve probably already checked what it means, but if not… You better read this and the next post. So today we will talk about the basics of variance in our own generic interfaces.
Sztuka programowania 2003 dni, 2 godziny, 39 minut temu 125 źrodło rozwiń
Dzisiaj czas na kolejny wpis poświęcony wzorcom kreacyjnym, a konkretnie na omówienie wzorca projektowego Builder. Builder jest wzorcem, który dzieli implementację obiektu na etapy.
Architektura 2250 dni, 1 godzinę, 33 minuty temu 105 źrodło rozwiń
Na każdym etapie swojej kariery programista patrzy na interfejsy zupełnie inaczej. Programista rozpoczynający przygodę z programowaniem nawet jeśli zrozumie technikę działania interfejsów, to prawdopodobnie w perspektywie całej architektury aplikacji nie będzie do końca przekonany o sensie ich używania. Starszy programista z kolei dostrzeże wiele ich zalet, a wręcz konieczność ich stosowania..
Sztuka programowania 2281 dni, 51 minut temu 242 źrodło rozwiń
Bawiąc się z interfejsem w aplikacji mobilnej naszła mnie refleksja. Dlaczego programiści nie chcą tworzyć ładnego UI?
Daj się poznać 2017 2805 dni, 35 minut temu 131 źrodło rozwiń
W trakcie prac nad dosyć skomplikowanym systemem walidacyjnym zastosowałem interfejsy i System.Reflection aby uprościć wywoływanie kolejnych reguł biznesowych.
Sztuka programowania 2823 dni, 13 godzin, 26 minut temu 259 źrodło rozwiń
Public, Protected, Private Do czego służą modyfikatory dostępu? Do ograniczania dostępu do metod, pól i właściwości klas (C#). Ograniczenie to sprawdzane jest w trakcie kompilacji i gdy sięgasz za daleko taki komunikat pojawia się na ekranie: Error CS0122 ‚Test.fooPrivate()’ is inaccessible due to its protection level. Ale wystarczy odrobina refleksji tu i tam i można spokojnie olać modyfikatory: Klasa Test (@21) to twór na potrzeby przykładu. Wcześniej (@9) tworzę in...
Architektura 3023 dni, 1 godzinę, 43 minuty temu 171 źrodło rozwiń
Zanim omówimy czym jest IoC i jak będę go używał, zacznijmy od tego czym jest Dependency Injection. Głównie chodzi o to, żeby rozdzielić implementacje poszczególnych klas. (...)
Daj się poznać 2016 3173 dni, 16 godzin, 41 minut temu 165 źrodło rozwiń
Nie zdawałem sobie sprawy jak bardzo łatwiej pisać kod w oparciu o interfejsy. Zamiast tworzyć od razu klasy i martwić się ich implementacją, możemy odłożyć to zadanie na przyszłość. Dzięki temu można stworzyć hierarchię zależności między typami, nie martwiąc się zbytnio wnętrzem interfejsu.
Daj się poznać 2016 3177 dni, 11 godzin, 32 minuty temu 91 źrodło rozwiń
Ale o czym dzisiaj, dzisiaj o obcisłości po angielsku w programowaniu. Słowo tight będzie jednym z bohaterów wpisu. A nawet tight coupling, czyli coś mocno wiążącego. Co tak mocno wiąże w programowaniu? Moim zdanie new jest temu winny. Wiąże bowiem ono ze sobą klienta, klasę którą korzysta z new aby zaspokoić swoje potrzeby, oraz dostarczyciela usługi, czyli klasę, która jest w stanie zaspokoić tę (tą) potrzebę.
Sztuka programowania 3515 dni, 1 godzinę, 13 minut temu 545 źrodło rozwiń
Interfejs nie zawiera żadnego kodu użycia, a jedynie specyfikacje metod i ich właściwości. Poprzez dziedziczenie interfejsu przez klasę lub strukturę możemy zagwarantować implementacje danych zachowań. Dobrą praktyką jest, aby interfejsy zaczynały się od dużej litery I. Również samo Visual Studio daje nam kilka gotowych interfejsów, które jak widać poniżej, zaczynają się od duże litery I. Definicję interefejsu zapisujemy za pomocą slowa kluczowego interface. Np:interface ICzlowiek { } Interfejs...
W C# można implementować interfejsy na dwa sposoby: jawny oraz niejawny. Rozważmy poniższy interfejs:interface ISerializable { void Serialize(string path); } Implementacja jawna:class ExplicitImplementation:ISerializable { #region ISerializable Membersvoid ISerializable.Serialize(string path) { thrownew NotImplementedException(); } #endregion } Implementacja niejawna:class ImplicitImplementation:ISerializable { #region ISerializable Membersvoid ISerializable.Serial...
Sztuka programowania 4395 dni, 16 godzin, 54 minuty temu 135 źrodło rozwiń
W zeszłym tygodniu na dotNETomaniaku wypromowano artykuł na temat interfejsów. Zapoznałem się z nim i odnoszę wrażenie, że autor nie rozumie w pełni roli interfejsu i myli go z klasą bazową. O taką pomyłkę rzeczywiście nietrudno, wiele klas buduje bowiem swoją funkcjonalność na podstawie interfejsów, ale to nie oznacza automatycznie, że interfejs jest ich przodkiem, zaczynem. Trzeba zacząć od tego, że choć interfejs umieszcza się w definicji klasy tak samo jak klasę dziedziczoną...
Sztuka programowania 4402 dni, 11 godzin, 53 minuty temu 98 źrodło rozwiń
O interfejsach napisano już wiele artykułów. Postaram się dlatego podejść do tego zagadnienia od innej strony. Na początek pytanie: czym różni się metoda wirtualna od implementacji metody z interfejsu? Mogło by się zdawać, że są to bardzo podobne operacje.
Sztuka programowania 4409 dni, 18 godzin, 3 minuty temu 200 źrodło rozwiń
Implementując w danej klasie kilka interfejsów możemy spotkać się z sytuacją, w której różne interfejsy będą posiadały składowe o tych samych nazwach. A co jeżeli metoda jednego z interfejsów ma inne przeznaczenie niż metoda innego i ich kod powinien być różny? Rozwiązaniem tego problemu jest jawna implementacja interfejsów.
Sztuka programowania 4461 dni, 13 godzin, 1 minutę temu 103 źrodło rozwiń
W obecnym czasie, z bardzo rozwiniętymi środowiskami programistycznymi, takimi jak choćby Visual Studio, czy też Eclipse, bardzo łatwo jest rozpocząć swoją przygodę z programowaniem, które w tym przypadku czasem bardziej przypomina zabawę z klockami, niż rzeczywiste . Jednak nastawiając się na bezmyślne składanie klocków, szybko można obudzić się z przysłowiową , w sytuacji gdy zajdzie potrzeba modyfikacji lub rozszerzenia tak radośnie tworzonego kodu, a warto zaznaczyć, że nieumiejętnie sklejony kod mo...
Architektura 4571 dni, 15 godzin, 26 minut temu 475 źrodło rozwiń
Można by rzec ,,Im głębiej w las tym ciemniej”. Po zapoznaniu się ze wcześniejszymi artykułami na temat Klas w C# i Dziedziczenia przyszedł czas na klasę object, klasy abstrakcyjne, instancje i struktury. Może nie są to bardzo trudne zagadnienia ale jeżeli poznasz je i zrozumiesz będziesz mógł tworzyć programy wydajniejsze i bardziej skąplikowane. Zapraszam do lektury.
Z serii: artykuły dla zielonych, może komuś pomoże zrozumieć czym są interfejsy w technologii .NET
XMLSerializer jest bardzo wygodnym sposobem zapisu klas w formie pliku XML. Rozważmy następujący przykład:publicinterface IData { // jakies dekleracjestring Text{get;set;} } publicclass Data: IData { publicstring Text{get{...}set{...}} } publicclass ClassA { public IData Data{get;set;} } Niestety po próbie serializacji dostaniemy wyjątek mówiący, że nie można zapisywać interfejsu. Jaka jest odpowiedź na pytanie zadanie w poście? NIE da się! W poście mam zamiar pokazać wyłącznie pewne sposob...