Wpis o tym dlaczego w projektach na Windows Phone, Silverlight do serializacji binarnej używam biblioteki SharpSerializer oraz jak przeportowałem ją na .NET 4.5 oraz Windows Runtime.
Strona głównaUżytkownik
nocturn | użytkownik
Mobile development 4394 dni, 22 godziny, 36 minut temu 54 źrodło rozwiń
It is a common practice to validate function arguments before running actual code. Usually validation looks like that: public void Update(Car entity) { if(entity ==null) throw new ArgumentNullException("entity"); } There is nothing wrong with this code, however we have to repeat this piece of code in every function. Of course we could create some helper class for argument validation and call approperiate validation function before launching...
Witam Ostatnio napotkałem na dość ciekawy wyjątek podczas wykonywania NHibernatowego inserta. W bazie danych mam prostą tabelę Do takiej tabeli został stworzony model namespace Model { public class Appointment { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual DateTime StartDate { get; set; } public virtual TimeSpan Duration { get; set; } } } oraz mapping namespace Model.Mappings { public class AppointmentM...
Witam Ostatnio modyfikując mój kod stanąłem przed problemem rzutowania obiektu typu MembershipUser(z namespaca System.Web.Security) na mój własny typ UserDTO. Klasa UserDTO nie wyróżnia się niczym specjalnym i wygląda następująco public class UserDTO : UserBase { public string Id { get; set; } public string Email { get; set; } public string DisplayName { get; set; } } Podejściem dość oczywistym w takim przypadku jest utworzenie odpowiedniego konstruktora w klasie...
Ostatnimi czasy w pracy eksperymentujemy z ASP.NET MVC. Jednym z problemów na jakie natknąłem się poznając tą technologię było utworzenie okien modalnych. Po niezbyt owocnej walce z kontrolkami ze stajni Devexpressa postanowiliśmy, że skorzystamy z darmowej biblioteki Kendo UI napisanej w jQuery. Wspomnianą wcześniej bibliotekę możemy znaleźć pod adresem http://www.kendoui.com/get-kendo-ui.aspx. Aby uzyskać dostęp do plików należy zarejestrować się w systemie - oczywiście rejestracja jest darmowa. Po zas...
Na początku stwórzmy strukturę z konstruktorem przyjmującym dwa parametry:publicstruct SampleStruct { public SampleStruct(int x, int y) { _x = x; _y = y; } privateint _x, _y; } Czy powyższy kod jest prawidłowy? Tak, skompiluje się i będzie działał bez problemów. Zdefiniujmy więc domyślny konstruktor:publicstruct SampleStruct { public SampleStruct() { _x = _y =0; } public SampleStruct(int x, int y) { _x = x; _y = y; ...
Dzisiaj prosta i częsta sprawa – obsługa zdarzeń. Zdefiniujmy fikcyjne zdarzenie:class SampleClass { publicevent EventHandler EventHappened; } Następnie mamy jakąś metodę, która po wykonaniu własnej logiki, wywołuje zdarzenie. Jak powinno to zostać prawidłowo wykonane? Zacznijmy od niepoprawnego podejścia:class SampleClass { publicevent EventHandler EventHappened; privatevoid Method() { EventHappened(this,new EventArgs()); } } Metoda spowoduje wyjątek jeśli żadne z...
W tym wpisie postaram się krótko przedstawić blok bezpieczeństwa (Security Block) z biblioteki Microsoft Enterprise Library. Biblioteki tej użyjemy do sprawdzania rol i reguł dostępu do funkcji serwisu WCF. Najpierw oczywiście musimy pobrać bibliotekę Microsoft Enterprise Library, znajduje się ona pod tym adresem. http://www.microsoft.com/download/en/details.aspx?id=15104. Biblioteka ta jest również dostępna z poziomu NuGeta, jednakże instalacja poprzez ten plugin dorzuca do projektu tylko dll-ki. W p...
Silverlight 4690 dni, 8 godzin, 2 minuty temu 61 źrodło rozwiń
W poprzednim wpisie przedstawiłem w jaki sposób zaimplementować mechanizm logowania po stronie serwera. Wykorzystałem do tego celu WCF RIA oraz znane z ASP MembershipProvidery. Tym razem przedstawię jak wymusić logowanie po stronie klienta, oraz w jaki sposób można dynamicznie zmieniać providerów, którzy walidują usera. Poprzednim razem stworzyliśmy już szkielet aplikacji, zatem mamy projekt klienta oraz projekt serwera. Zacznijmy od "włączenia" FormsAuthentication po stronie klienta. W pliku App.xaml.c...
Silverlight 4690 dni, 8 godzin, 2 minuty temu 48 źrodło rozwiń
W dzisiejszym wpisie postaram się przedstawić moją koncepcję logowania do aplikacji Silverlightowej z wykorzystaniem MembershipProviders oraz własnego AuthenticationService. Zacznijmy od stworzenia bazy danych, w której będziemy przetrzymywać informacje o użytkownikach - hasła, role itp. Bazę danych stworzymy przy użyciu narzędzia aspnetregsql.exe, które to wygeneruje schemat bazy danych dostosowany do możliwości SqlMembershipProvider-a. aspnetregsql.exe znajduje się w katalogu C:\WINDOWS\Microsoft.NET...
Silverlight 4690 dni, 8 godzin, 2 minuty temu 128 źrodło rozwiń
Style jest to mechanizm wprowadzony w WPF-ie, a następnie w Silverlighcie, dzięki któremu w łatwy sposób można ujednolicić wygląd elementów naszej aplikacji. Style z reguły definiowane są w zasobach. Mogą to być zarówno zasoby całej aplikacji, danego okna lub nawet wybranej kontrolki. Przykładowy styl może wyglądać w następujący sposób: Każdy styl jest rozpoznawany dzięki unikalnemu kluczowi - parametr x:Key. Możliwe jest pominięcie klucza, w przypadku gdy ustawiona zostanie właściwść TargetType. ...
ListViewCollection (WPF) ListViewCollection jest to kolekcja wprowadzona do WPF-a, która wspiera sortowanie, grupowanie oraz filtrowanie. Kolekcję taką tworzymy w następujący sposób List
Walidacja jest to technika sprawdzająca, czy dany obiekt spełnia pewne założenia poprawności danych. W WPF-ie oraz Silverlighcie istnieją trzy sposoby walidacji obiektów: walidacja poprzez rzucanie wyjątków, walidacja z użyciem interfejsu IDataErrorInfo, walidacja z użyciem interfejsu INotifyDataErrorInfo Walidacja poprzez rzucanie wyjątków Walidacja poprzez rzucanie wyjątków odbywa się w następujący sposób. W seterze danej właściwości dodajemy warunek sprawdzający czy wpisane dane są poprawne...
Tak jak wspomniałem w poprzednim wpisie, tym razem zajmiemy się tworzeniem własnej klasy implantującej interfejs ICommand . 1. Implementacja interfejsu ICommand - WPF Klasa implementująca ICommand może wyglądać w następujący sposób public class DelegateCommand : ICommand { private Action
Trigery jest to mechmizm WPF-a służący reakcji UI na jakieś zdarzenie. Wyróżniamy cztery rodzaje triggerów Property triggers - używane do zareagowanie na zmiany dependency property w danej kontrolce, Data triggers - używane do zareagowanie na zmiany w bindowanych obiektach- można podłączyć się do właściwości z DataContextu jak i z danej kontrolki, MultiDataTriggers - używane do reagowania na zmiany kilku właściwości, MultiTrigger - używane do reagowania na zmiany kilku dependecy property w danej ...
Biblioteka Microsoft UI Automation ujrzała światło dzienne wraz z premierą .NET 3.0 - jednakże pozostała ona w cieniu swoich większych braci WPF oraz WPF, które również zostały wprowadzone do Frameworka 3.0. Microsoft UI automation zapewnia nam dostęp do wszystkich elementów drzewa wizualnego aplikacji. Dzięki czemu mamy możliwość: Znajdowania wybranych przez nas kontrolek Interakcji z kontrolkami - wpisywanie tekstów do TextBox-ów, klikanie w przyciski itp Wczytywania wartości już wprowadzonych ...
Interfejs INotifyPropertyChangedPropertyChanged znany jest prawdopodobnie każdemu programiście C#. Interfejs ten zawiera jedynie jedno zdarzenie public event PropertyChangedEventHandler PropertyChanged; które powinniśmy odpalić w momencie gdy dana właściwość zostanie przez nas zmieniona. Dzięki temu dowolny obiekt, który będzie nasłuchiwał zmian danej właściwości zostanie o tym poinformowany. Przykładowa klasa implementująca ten interfejs może wyglądać w następujący sposób: public class ViewMode...
Wstęp Każdy programista, który napisał chociaż parę linijek kody w WinFormsach wie, że kontrolki używają eventów do powiadamiania o zmianach swojego stanu. W przypadku, gdy interesuje nas odpowiednia reakcja na zdarzenie, podpinamy się do niego odpowiednią funkcją i wykonujemy założone przez nas operację. W analogiczny sposób można postępować w WPF-ie oraz w Silverlighcie, jednakże podejście takie niejako mija się z modelem MVVM. Posiadanie event handlerów w kodzie, ściśle wiąże nam widok (XAML) z code ...
Wczoraj w pracy natknąłem się na, na pierwszy rzut oka, banalny problem, który jak to często bywa po drugim rzucie okazał się trudniejszy niż zakładałem. Ale po kolei...
Bazy danych i XML 4735 dni, 4 godziny, 7 minut temu 143 źrodło rozwiń
Poszukując sposobów automatycznego testowania aplikacji natrafiłem na ciekawą funkcjonalność Visual Studio 2010 Ultimate. Mianowicie w tej wersji naszego ulubionego IDE znalazło się miejsce na nowy typ testów - Coded UI Test. Coded UI Test jest to automatyczny test UI, który tworzymy poprzez nagrywanie akcji jakie wykonujemy w naszej aplikacji. Nie musimy pisać ani jednej linijki kodu żeby przetestować jakąś funkcjonalność naszego programu. Jedyne co musimy zrobić jest to przejście przez wszystkie niezbę...