dotnetomaniak.pl - Artykuły z tagiem C#

Klasa XmlSerializer służy do serializacji całych klas. Za pomocą atrybutu XmlIgnore można wykluczyć właściwości, których nie chcemy zapisywać. Problem pojawia się gdy w klasie pochodnej chcemy wykluczyć jakieś pola z klasy bazowej tj.:class Employee { publicstring FirstName { get; set; } } class Manager:Employee { //...} Serializaując Employee chcemy zapisać FirstName. Z kolei serializując Manger nie chcemy już tego robić. Jak uzyskać taki efekt? Dodając atrybut XmlIgnore w Employee  spowoduje...

Tagi: C#, serializacja
Dziel się z innymi:
Piotr Zieliński » Ignorowanie pól klasy bazowej podczas serializacji

Sztuka programowania 3476 dni, 8 godzin, 48 minut temu pzielinski 81 źrodło rozwiń

Rozpoznaję taki jakby pattern przeładowanych metod dla string.Format(…). Jest wykorzystywany w wielu miejscach we Frameworku jak i poza nim. Chciałem zwrócić uwagę na ILog.DebugFormat() w bibliotece log4net oraz na Console.WriteLine().

Dziel się z innymi:
Trochę więcej kultury | Show me the code

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...

Piotr Zieliński » Interfejsy: implementacja jawna vs. niejawna

Sztuka programowania 3479 dni, 10 godzin, 16 minut temu pzielinski 130 źrodło rozwiń

Życie programisty byłoby prostsze, gdyby zawsze używał explicite CultureInfo gdy korzysta z ToString() oraz string.Format(...).

Dziel się z innymi:
Trochę kultury! | Show me the code

Serializator XML'owy platformy .NET jest bardzo łatwy i przyjemny w użyciu, ale czasami jego działanie może sprowadzić nas na manowce. Poniższy kod obrazuje o co mi chodzi. Zacznijmy od przykładowej, bardzo prostej klasy, którą będziemy serializować...

Dziel się z innymi:
Michał Komorowski: XmlSerializer- taka ciekawostka

Inne 3481 dni, 13 godzin, 48 minut temu psz750 124 źrodło rozwiń

O strukturach na blogu pisałem już wielokrotnie m.in.: “Klasy i struktury w C#”, “Dlaczego struktury nie mogą posiadać konstruktora bez parametrów?”, “StructLayout – wprowadzenie”, “StructLayout–zastosowanie”. W pierwszych z tych postów, przedstawiającym różnice między klasami a strukturami napisałem, że co prawda struktury nie mogą dziedziczyć po klasach ale mogą za to implementować interfejsy. Dzisiaj chciałbym rozszerzyć to o kilka słów gdyż w tamtym wpisie ograniczyłem się tylko do stwierdzenia, że j...

Dziel się z innymi:
Piotr Zieliński » Struktury danych a interfejsy

Sztuka programowania 3482 dni, 14 godzin, 38 minut temu pzielinski 98 źrodło rozwiń

O dwóch sposobach inicjalizacji właściwości obiektu pisałem już tutaj. Dziś chciałbym pokazać jak zainicjalizować kolekcję używając “nowego” mechanizmu wprowadzonego w C# 3.0. Z poprzedniego post’a wiadomo, że właściwości można ustawiać tak:internalclass Person { public Person() { } public List

Tagi: C#
Dziel się z innymi:
Piotr Zieliński » Inicjalizacja obiektów z kolekcjami.

Inne 3486 dni, 2 godziny, 2 minuty temu pzielinski 116 ź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ą...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Interfejs (chciałbym sprostować), to nie jest klasa bazowa

Sztuka programowania 3486 dni, 5 godzin, 15 minut temu PaSkol 97 źrodło rozwiń

Piotr Zieliński pisze ciekawy cykl “Dobre i złe praktyki w C#”, a ja dzisiaj chciałem się odnieść do części VI i opisać rzecz, której dotychczas nie byłem świadom. Inicjalizacja właściwości obiektu.

Dziel się z innymi:
Use object initializer | Show me the code

Inne 3487 dni, 9 godzin, 37 minut temu psz750 157 źrodło rozwiń

Platforma .NET pozwala na definiowanie metadanych, czyli pewnych informacji opisujących różne elementy kodu. Funkcjonalność ta realizowana jest poprzez atrybuty. Atrybuty używane mogą być do opisu takich elementów jak klasy, metody, zdarzenia, pola, właściwości oraz wielu innych. Oprócz szeregu zdefiniowanych atrybutów mamy możliwość tworzenia własnych.

Dziel się z innymi:
Definiowanie oraz odczyt własnych atrybutów « Developer notes

Inne 3488 dni, 17 godzin, 10 minut temu psz750 118 źrodło rozwiń

Wyrażenia lambda są łatwe w użyciu, ale jak to bywa z takimi ułatwieniami również nieświadomie można spowodować poważne problemy. Przykład:class SampleClass { } class Factory { private Type _type =typeof (SampleClass); public Func

Tagi: C#, Lambda
Dziel się z innymi:
Piotr Zieliński » Code Review: implementacja wewnętrzna wyrażeń lambda oraz metod anonimowych

Sztuka programowania 3488 dni, 17 godzin, 10 minut temu pzielinski 143 źrodło rozwiń

Notacja węgierska to ZŁOOOOOO! Słychać to ze wszystkich stron i trudno się z tym nie zgodzić. Przedrostki nazw identyfikatorów określające typy takiego identyfikatora nigdy nie były jakimś nowatorskim rozwiązaniem – prędzej protezą. Czy oznacza to jednak, że całość tego pomysłu należy odbierać negatywnie? W mojej opinii nie. A dlaczego - o tym tenże wpis.

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » O dewaluacji węgierskiej notacji, a także o jej nadinterpretacji

Sztuka programowania 3491 dni, 17 godzin, 16 minut temu PaSkol 148 źrodło rozwiń

Kolejna część artykułu o dobrych i złych praktykach. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-6.aspx

Dziel się z innymi:
Piotr Zieliński  » Dobre i złe praktyki w C# – część VI

Sztuka programowania 3491 dni, 17 godzin, 16 minut temu pzielinski 348 ź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.

Tagi: .Net, C#, interface
Dziel się z innymi:
Programowanie w .NET: O interfejsach raz jeszcze

Sztuka programowania 3493 dni, 11 godzin, 25 minut temu psz750 197 źrodło rozwiń

Artykułów na temat Garbage Collector zostało napisanych już wiele. Dlatego nie będę przedstawiać dokładnie zasady jego działania, a raczej praktyczne wskazówki implementacji finalizerów i wzorca IDisposable.

Tagi: .Net, C#, IDisposable
Dziel się z innymi:
Programowanie w .NET: Zarządzanie pamięcią w .NET

Inne 3494 dni, 1 godzinę, 57 minut temu psz750 218 źrodło rozwiń

Funkcja GetHashCode używana jest tylko i wyłącznie w przypadku korzystania z kolekcji typu klucz wartość jak HashSet lub Dictionary. Funkcja ta nie jest tak oczywista jak się to zdaje i napisanie poprawnej jej wersji sprawia wiele problemów.

Tagi: .Net, C#, gethashcode
Dziel się z innymi:
Programowanie w .NET: Pułapki podczas implementacji GetHashCode

Inne 3494 dni, 1 godzinę, 57 minut temu psz750 93 źrodło rozwiń

Tworząc własny typ w większości przypadków definiujemy także dla niego funkcje równości. Mało kto wie jednak że C# oferuje aż 4 takie funkcje.

Tagi: .Net, C#, Equality
Dziel się z innymi:
Programowanie w .NET: Zrozumieć Equality

Inne 3494 dni, 1 godzinę, 57 minut temu psz750 111 źrodło rozwiń

O zdarzeniach było już wielokrotnie na blogu. Pokazywałem różne sposoby wywołania zdarzeń. Najpopularniejszym chyba sposobem jest poniższy wzorzec:publicclass Person { publicevent EventHandler FirstNameChanged; virtualprotectedvoid OnFirstNameChanged(EventArgs e) { if (FirstNameChanged !=null) FirstNameChanged(this, e); } } Jeśli wielowątkowość wchodzi w grę wtedy lepiej napisać:publicclass Person { publicevent EventHandler FirstNameChanged; virtualprotectedvoid O...

Tagi: C#, events
Dziel się z innymi:
Piotr Zieliński » Wywoływanie zdarzeń za pomocą metod rozszerzających

Sztuka programowania 3494 dni, 18 godzin, 12 minut temu pzielinski 99 źrodło rozwiń

Istnieją 4 słowa kluczowe, o których istnieniu wie niewielu programistów C#: _arglist, _refvalue, _makeref, _reftype. Stanowią one jednak ciekawostkę, o której istnieniu warto mieć pojęcie. Oficjalna dokumentacja(C# Keywords) nie wspomina o nich. Można jednak szybko przekonać się o ich istnieniu, gdyż Visual Studio podświetla je podobnie jak inne słowa kluczowe.

Tagi: C#, CLI
Źródło: jasica.net
Dziel się z innymi:
Nieudokumentowane słowa kluczowe C#

Inne 3496 dni, 1 godzinę, 6 minut temu vveasel 308 źrodło rozwiń

Zdarzenia stanowią bardzo wygodny mechanizm monitorowania stanu obiektów. W .NET można spotkać je na każdym kroku. Kontrolki zarówno w WinForms jak i WPF, posiadają wiele zdarzeń, często kilkadziesiąt. Niestety każda deklaracja zdarzenia pochłania zasoby. Nie ma to znaczenia gdy obiekt posiada tylko kilka zdarzeń ale może to być zauważalne dla skomplikowanych klas np. kontrolek w WinForms. Każda kontrolka eksponuje dziesiątki zdarzeń a użytkownicy zwykłe korzystają wyłącznie z kilku – rzadko ma miejsce s...

Tagi: C#, EventHandler
Dziel się z innymi:
Piotr Zieliński » Optymalizacja klas z wieloma zdarzeniami – EventHandlerList

Sztuka programowania 3497 dni, 18 godzin, 15 minut temu pzielinski 120 źrodło rozwiń

1 2... 44 45 46 47 48 49... 72 73

Najaktywniejsi w tym miesiącu