Cz.7

14
C# Cz.7 [email protected] Refleksja, Atrybuty

description

C#. Refleksja, Atrybuty. Cz.7. k [email protected]. Agenda. Przypomnienie zeszłego semestru Co to jest refleksja? Refleksja w C# Pierwsze zadanie Atrybuty Do dzieła!. Przypomnienie. Słowa kluczowe w C# Co to polimorfizm? Jak go osiągnąć MSDN Twoim przyjacielem - PowerPoint PPT Presentation

Transcript of Cz.7

Page 1: Cz.7

C#Cz.7

[email protected]

Refleksja, Atrybuty

Page 2: Cz.7

Agenda

Przypomnienie zeszłego semestruCo to jest refleksja?Refleksja w C#Pierwsze zadanieAtrybutyDo dzieła!

Page 3: Cz.7

Przypomnienie

Słowa kluczowe w C#Co to polimorfizm?

Jak go osiągnąćMSDN Twoim przyjacielem

http://msdn.microsoft.com/en-us/library/gg145045.aspxEwentualnie resharper…

Page 4: Cz.7

Przypomnienie - Kolekcje

Pętla foreachIEnumerableList, Dictionary

List<T>, Dictionary<T,U>

Page 5: Cz.7

Przypomnienie – IO

File, DirectoryStreamReader, BinaryReader

Page 6: Cz.7

Przypomnienie – pytania?

Page 7: Cz.7

Co to jest refleksja?RTTI – RunTime Type Information

Czy zmienna jest typu int czy string?1 vs ”1”

Refleksja pozwala w łatwy sposób zarządzać kodem tak, jakby był danymi.

Page 8: Cz.7

Refleksja w C#

TypeGetType()typeof()

Kompletna informacja o typie:NazwaRodzajPola, metody, zdarzeniaAtrybuty

Page 9: Cz.7

Refleksja w C#

MethodInfoNazwaParametryZwracany typKlasa gdzie była zadeklarowanaItp…

ConstructorInfoPodobnie

InvokeWywołanie metody lub stworzenie obiektu

Page 10: Cz.7

Pozostałe

Typeof(string[])GetElementType()

Wartości enum’ówGetery i Setery dla propertyParametry generyczne

Page 11: Cz.7

StackTrace

Dobieranie się do metod wyżejnew StackTrace();

Wykorzystywane w logowaniust.GetFrame([1,2,,n]).Name

I profilowaniuKosztowne!

Page 12: Cz.7

Pierwszy program

Parametry linii poleceńStwórzcie klasę ConsoleAppW niej metodę która przyjmuje obiekt klasy dziedziczącej i args

Jak to zrobić statycznie a jak niestatycznie?

Sparsować argumenty i ustawić wszystkie property w przekazanym obiekcieStworzyć właściwą klasę aplikacji i załadować parametry

Page 13: Cz.7

Atrybuty

Metadane w kodzieMożna dodawać praktycznie na wszystkimPrzykłady

[Serializable][Obsolete][STAThread]

By definiować własne dziedziczymy z klasy AttributeMożna dodać [AtributeUsage]

Page 14: Cz.7

Do dzieła

Poprzedni program ma pewne wady:Wszystkie property są jednakowo traktowaneint Size vs int AccountBalance

Dodajcie atrybuty ConsoleParam(object defaultValue)ConsoleValidator(Type validator)

Zmieńcie metodę parsującą by dostosować ją do nowych atrybutów