Bindowanie do obiektów ADO.NET. Najczęściej obiekty ADO.NET inicjuje się w kodzie, a następnie w XAMLu następuje bindowanie do konkretnej kontrolki...
Już kiedyś pisałem jak obsługiwać prawidłowe wyjątki ale dzisiaj jeszcze raz chciałbym rozwinąć temat. Zacznijmy od:privatestring GetData(int id) { string result=null; try { result = _service.GetData(id); } catch(Exception e) { } return result; } Jest to oczywiście skrajnie złe rozwiązanie ponieważ wszystko ignorujemy. Na szczęście programiści rzadko popełniają powyższy błąd. Niestety dużo częściej popełnianym błędem jest:privatestring GetData(int id) { stri...
Sztuka programowania 3690 dni, 5 godzin, 13 minut temu 169 źrodło rozwiń
Dzisiaj chciałbym przedstawić jedną z podstawowych rzeczy w języku C#, którą osoby mające za sobą już kilka programów w tym języku zapewne doskonale znają. Mam na myśli trzy słowa kluczowe, które sprawiają, że dostosowywanie funkcji składowych do naszych potrzeb jest jeszcze prostsze. Pierwszym z nich jest słowo out. Pozwala na zwrócenie w prost...
Sztuka programowania 3691 dni, 6 godzin, 24 minuty temu 140 źrodło rozwiń
W miniony weekend postanowiłem zaradzić coraz większemu zamulaniu pracowego laptopa. Wziąłem swój zakurzony, nieużywany od wielu miesięcy 120GB SSD OCZ Vertex2, wsadziłem jako główny dysk do Vostro i, dając się ponieść chwili, wrzuciłem nań Windows 8. Wszystko poszło zadziwiająco sprawnie i prawie bez problemów, i wreszcie komputer jest gotowy do pracy po 15 sekundach od wciśnięcia "on" a nie po 15 minutach. Ale ja nie do końca o tym...
W ADO.NET jest coś takiego jak możliwość ustanowienia relacji pomiędzy dwiema tabelami, a następnie prezentacja tabeli zależnej z kontekście nadrzędnej. Okazuje się jednak, że sposób prezentacji takich dwóch zależnych tabel z uwzględnieniem tej zależności już tak oczywisty nie jest.
Bazy danych i XML 3692 dni, 20 godzin, 38 minut temu 62 źrodło rozwiń
Wszyscy dążymy do oprogramowania, które zawsze działa ale oczywiście musimy przygotować się na przypadki w których wystąpił wyjątek i nie wiadomo jak go obsłużyć. Najgorszą reakcją jest oczywiście pozwolenie aplikacji dalej działać co może spowodować nieoczekiwane efekty oraz popsuć po prostu dane. Musimy wszystko zrobić aby nie dopuścić do niespójności danych. W przypadku gdy wiemy, że aplikacja nie może kontynuować swojego działania musimy bezwzględnie zakończyć cały proces albo AppDomain. Należy po pr...
Sztuka programowania 3692 dni, 20 godzin, 38 minut temu 128 źrodło rozwiń
Dziś będzie opowieść… Co sądzą ludzie, którzy nie testują? Ja, dla przykładu, wierzę w Unit Testy. Kontrastowałem (podpytywałem) to ze stanowiskiem wielu osób. Niektóre osoby odpowiadały, że to nie działa. Następnie podały powody dlaczego tak uważają i od tych powodów chciałbym zacząć...
Sztuka programowania 3692 dni, 20 godzin, 38 minut temu 167 źrodło rozwiń
Struktura Nullable jest już dobrze znana w świecie .NET. Pozwala na zasymulowanie wartości NULL dla typów prostych (value types). C# posiada jednak wiele ułatwień, które chciałbym opisać w dzisiejszym poście. Prawdopodobnie wiele czytelników korzystało z nich ale nie wiedziała, że to ułatwienie ze strony kompilatora a nie samej struktury Nullable. Zacznijmy od kodu źródłowego Nullable:[Serializable, StructLayout(LayoutKind.Sequential)] publicstruct Nullable
Bindowanie to mechanizm wiążący dane z interfejsem je wyświetlającym. Mechanizm ten w WPF jest bardzo rozbudowany i oferuje możliwości nieosiągalne w prosty sposób dla Windows Forms.
Netmajor's Tech BlogHOMEO mnieKontaktWalidacja zdalna w ASP.NET MVC za pomocą atrybutu Remote W asp.net mvc pojawił się atrybut Remote, który nakładamy na pole z modelu zbindowanego do widoku.
Kontrolki WPF zostały przygotowane w ten sposób, aby łatwo można modyfikować ich wygląd. Definicję wyglądu oddzielono całkowicie od kodu definiującego funkcjonalność. Szablony kontrolek tworzone są w XAML-u. Szablon zawiera kompletny opis wyglądu danej kontrolki.
WPF umożliwia tworzenie dwóch typów kontrolek: User controls - kontrolki zbudowane przez użytkownika, dziedziczą po klasie UserControl. Jest to kontrolka stworzona z kilku innych kontrolek; Custom controls - kontrolki stworzone od zera. Dziedziczą po klasie Control lub ContentControl.
Każdy dobry (ten zły także) warsztat nie obędzie się bez odpowiednich narzędzi. Oto zestaw narzędzi, których ja używam.
Mobile development 3699 dni, 10 godzin, 38 minut temu 97 źrodło rozwiń
Dziś kolejny post z cyklu zastosowanie słowa kluczowego dynamic. Ostatnio pisałem o ExpandoObjet, który jest dynamicznym kontenerem na metody i dane. DynamicObject pozwala z kolei tworzyć wrappery na różne klasy. Zacznijmy od przykładu:internalclass Program { publicclass CustomWrapper : DynamicObject { publicoverridebool TryGetMember(GetMemberBinder binder, outobject result) { result ="Hello World"; returntrue; } publicoverridebool TrySetMem...
Sztuka programowania 3699 dni, 10 godzin, 38 minut temu 91 źrodło rozwiń
Rzezanie w czystym xml’u nie jest raczej przyjemne. Używnia XmlNode zamiast stringów nie jest wielkim pocieszem. Nie tędy droga. Dużo prościej stworzyć sobie obiekty które następnie będziemy serializować (deserializować) do XMLa.
Sztuka programowania 3699 dni, 10 godzin, 38 minut temu 104 źrodło rozwiń
Po ostatniej prezentacji dotyczącej Behaviour-Driven Development (BDD) postanowiliśmy przedstawić tą tematykę w bardziej przystępnej dla internautów formie. Stąd też poniższy wpis, gdzie zostaną przedstawione podstawowe założenia BDD, a już wkrótce pojawi się kolejny – opisujący zastosowanie tej metodyki w aplikacji ASP.NET MVC.
Sztuka tworzenia oprogramowania otoczona jest baaardzo wieloma "złotymi zasadami". Ich przestrzeganie nie gwarantuje co prawda sukcesu, lecz może znacznie poprawić jakość efektów naszej pracy. Chociażby SOLID... Dobrze jest zdawać sobie sprawę z tego, że nie tylko na poziomie kodu możemy pozytywnie wpłynąć na kształt projektu. Tak banalna pozornie sprawa jak sposób tworzenia commitów do systemu kontroli wersji może drastycznie zwiększyć komfort pracy nad systemem oraz ułatwić jego rozwijanie. Niestety sc...
W poprzednim wpisie omówiłem kilka mechanizmów walidacji wprowadzanych danych jakie oferuje technologia WPF. Dzisiaj rozszerzę ten temat o kwestie związane z formatowaniem danych oraz konwersją typów. Często zdarza się sytuacja, w której prezentując użytkownikowi pewne dane chcemy określić dla nich własny format. Równie często konieczne jest skonwertowanie wartości wprowadzonej przez użytkownika na docelowy typ danych.
Kiedyś już wspomniałem o słowie kluczowych dynamic. W tym i następnych wpisach chciałbym przedstawić praktyczne zastosowanie tego mechanizmu. Na koniec wyjaśnię, jak dynamic jest zaimplementowany przez CLR i jak bardzo spowalnia aplikację… Programiści używający ASP.NET MVC z pewnością rozpoznają zasadę działania ExpandoObject. Klasa umożliwia tworzenie dynamicznych kontenerów. Na przykład:privatestaticvoid Main(string[] args) { dynamic bag =new ExpandoObject(); bag.FirstName ="Piotr"; bag.LastN...
Sztuka programowania 3701 dni, 14 godzin, 13 minut temu 106 źrodło rozwiń
Kilka postów wcześniej pisałem o różnicach między const a read-only. Dzisiaj chciałbym pokazać scenariusz, który pokazuje kiedy NIE używać słowa const. Const jest doskonałym rozwiązaniem dla liczb, które są po prostu ZAWSZE stałe. Przykład? Liczba PI ma jedną wartość i oczywiście nigdy się nie zmieni. Istnieją jednak przypadki gdzie liczby w kodzie są zastępowane stałymi co nie zawsze jest dobrym wzorcem. Rozważmy, że mamy klasę przechowującą pewne parametry algorytmu:namespace ClassLibrary1 { publ...
Sztuka programowania 3705 dni, 6 godzin, 21 minut temu 152 źrodło rozwiń