W .NET 3.5 (a konkretniej - C# 3.0 oraz VB 9.0) pojawił się mechanizm "extension methods". Cel przyświecający jego autorom był zaiste godny uwagi: umożliwienie dodania nowych funkcjonalności do już istniejących, skompilowanych klas. Jedna z kilku "Ruby-like features" wprowadzonych do świata .NET. Przydatność takiego rozwiązania trudno przecenić - w ten sposób rozszerzono m.in. klasy już istniejące w .NET 2.0 (*).
Właściwości (properties) to przyjemny mechanizm do zapewniania enkapsulacji, czyli jednej z najważniejszych cech programowania obiektowego. Przyjemniejszy niż zwykłe metody zwane "getters & setters". Zwrócę jednak uwagę na ciekawy fakt (zapewne znany większości czytelników, ale...). Popatrzmy na następujący kod:
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:
Ciekaw jestem ilu moich czytelników aktywnie korzysta z funkcji High DPI. Ja tak. Mój monitor natywnie pracuje rozdzielczości Full HD. Jeśli to działa wydajnie (nie narzekam) to jest to bardzo fajna cecha, ale pod warunkiem własnie, że High DPI jest wykorzystane i zaimplementowane poprawnie od systemu operacyjnego do poszczególnych aplikacji. Windows 7 podchodzi do tego tematu bardzo poważnie. Opcjami systemowymi “powiększyłem” sobie system do 125%. Odcz...
Wysłanie wiadomości e-mail w .NET jest dziecinnie proste:MailMessage message = new MailMessage( "[email protected]", "[email protected]", "Temat", "Treść"); SmtpClient smtp = new SmtpClient(); smtp.Send(message); Powyższy przykład jest bardzo krótki, choć i tak został napisany niezwykle rozwlekle - wersja zminimalizowana zajęłaby 1 linijkę (w obu przypadkach ustawienia serwera pocztowego znajdują się w pliku konfiguracyjnym). Właściwie ten kawałek kodu powinien wystarc...
Bardzo szybki sposób na wygenerowanie hasła dla nowego użytkownika: string pw = Guid.NewGuid().ToString("N").Substring(0,7);
Lepiej będzie tu zawrzeć orginalną definicje metadanych ORM tools require a metadata format for the application to specify the mapping between classes and tables, properties and columns, associations and foreign keys, .NET types and SQL types...
Ostatnio pisząc Smart Client'a w WinForms do usług sieciowych (w sumie były 4 WebService'y na serwerze ASP.NET) natrafiłem na pewien problem. Mianowicie Visual Studio przy generowaniu namiastek WebService'ów umieszcza adres usługi w pliku app.config i stamtąd go pobiera. Mi natomiast była potrzebna możliwość zmiany adresu usługi przez użytkownika po uruchomieniu programu...
Abstract: opis sposobu na obliczenie wyrażeń arytmetycznych i logicznych na platformie .NET przy wykorzystaniu klasy XPath. Zastosowanie powyższego mechanizmu jako silnika reguł biznesowych...
Już od dłuższego czasu odchodzi się od pisania zapytań do baz danych poprzez pisanie zapytań SQL. Ma to wiele przyczyn, wśród nich można wymienić:..
Skoro wiem już coś o LINQ to SQL przyszła pora na Entity Framework Entity Framework miał ukazać się w VS2008 ale został opóźniony i udostępniony dopiero z VS2008 SP1..
Widok - edycja oraz dodawanie Oprócz opisanych wcześniej list musimy jeszcze operować na poszczególnych rekordach. Mamy do dyspozycji Create, Details, Edit z standardowych templatów...
Widok - index czyli lista Widok z samego założenia wzorca projektowego jest zależny od kontrolera, po kolei będą więc przedstawiane przykłady i spostrzeżenia odnośnie obu. Ponieważ wszystkiego jest dość dużo dlatego podział na listy i edycje...
Gdzie ja jestem czyli Routing. W świecie ASP.NET URL odpowiadał namacalnemu plikowi. W świecie MVC w którym posługujemy się pojęciami akcji i routingu URL nie ma nic wspólnego z plikiem, za to oczywiście ma wiele wspólnego z akcjami i kontrolerami...
Podobno w informatyce najcenniejszym zasobem są pomysły. Bo o ile zrealizowanie gotowej idei to praca czysto rzemieślnicza i – przynajmniej teoretycznie – możliwa zawsze do wykonania przy odpowiednim czasie i przy właściwej liczbie osób, to z kolei “wzięcie skądś” pomysłu nie jest taką prostą sprawą. W końcu, jak to ktoś powiedział, pomysły nie rosną przecież na drzewach :)
Tytuł artykułu zdradza nieco temat jaki chciałbym podjąć. Może samo versus jest nieco przewrotne, gdyż bardziej odpowiednie byłoby “Spring.NET a WCF” czy też po prostu “Spring.NET i WCF”...
W projekcie dorzuconym do wpisu w którym opisałem podstawy SubSonica zawarłem okazyjnie jeden mechanizm, który czasem się przydaje, mianowicie : partial classes. Cała operacja polega na tym, że elementy danej klasy można rozdzielić (w jednym, lub kilku plikach) na mniejsze części korzystając ze słowa kluczowego partial. Ale po co rozkładać klasę na części, skoro jeśli wszystko będzie w jednym miejscu, to jest czytelniej? Sprawdza się to np. przy kilku(-nasto) osobowych projektach, gdy naraz kilku program...
19.08.2009jQuery + VisualStudio 2008 = Error updating JScript IntelliSense: Object doesn’t support this property or method @ 2139:1autor: andrzej Idąc za ciosem postanowiłem dziś w pracy podłączyć jQuery w jednym z projektów. Po ściągnięciu najnowszej wersji (1.3.2) z google code i wrzuceniu na stronę, na której chciałem użyć jQuery, przywitało mnie w Visualu ostrzeżenie: Error updating JScript IntelliSense [ścieżka] – Object doesn’t support this property or method @ 2139:1. Pięknie się zaczyna – pomyś...
Nie każdy zdaje sobie z tego sprawę ale poniższe dwie konstrukcje mają inną semantykę: try { ... } catch(Exception ex) { throw; } try { ... } catch(Exception ex) { throw ex; } Różnica jest taka, że stosując pierwszą z nich nie tracimy informacji zawartej w stosie wywołań (stack trace). To znaczy, że jeśli ponownie rzucony przez nas...
Ostatnio pisałem o AutoMapperze, a kiedyś wcześniej o NHibernate. Dzisiaj złączę te dwa narzędzia niczym Jasia i Małgosię, Tristana i Izoldę, Lecha i Jarosława, a z ich nawzajemnego obcowania narodzi się problem, który dość łatwo przegapić. Wróćmy do przedstawionych ostatnio, banalnych klas: