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

1 C# Cz.7 Refleksja, Atrybuty ...
Author: Mateusz Rysz
0 downloads 3 Views

1 C# Cz.7 Refleksja, Atrybuty

2 Agenda Przypomnienie zeszłego semestru Co to jest refleksja?Refleksja w C# Pierwsze zadanie Atrybuty Do dzieła!

3 Przypomnienie Słowa kluczowe w C# Co to polimorfizm?Jak go osiągnąć MSDN Twoim przyjacielem en-us/library/gg aspx Ewentualnie resharper…

4 Przypomnienie - KolekcjePętla foreach IEnumerable List, Dictionary List, Dictionary

5 Przypomnienie – IO File, Directory StreamReader, BinaryReader

6 Przypomnienie – pytania?

7 Co to jest refleksja? RTTI – RunTime Type InformationCzy zmienna jest typu int czy string? 1 vs ”1” Refleksja pozwala w łatwy sposób zarządzać kodem tak, jakby był danymi.

8 Refleksja w C# Type Kompletna informacja o typie: GetType() typeof()Nazwa Rodzaj Pola, metody, zdarzenia Atrybuty

9 Refleksja w C# MethodInfo ConstructorInfo Invoke Nazwa ParametryZwracany typ Klasa gdzie była zadeklarowana Itp… ConstructorInfo Podobnie Invoke Wywołanie metody lub stworzenie obiektu

10 Pozostałe Typeof(string[]) Wartości enum’ówGetElementType() Wartości enum’ów Getery i Setery dla property Parametry generyczne

11 StackTrace Dobieranie się do metod wyżej Wykorzystywane w logowaniunew StackTrace(); Wykorzystywane w logowaniu st.GetFrame([1,2,,n]).Name I profilowaniu Kosztowne!

12 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 obiekcie Stworzyć właściwą klasę aplikacji i załadować parametry

13 Atrybuty Metadane w kodzie Można dodawać praktycznie na wszystkimPrzykłady [Serializable] [Obsolete] [STAThread] By definiować własne dziedziczymy z klasy Attribute Można dodać [AtributeUsage]

14 Do dzieła Poprzedni program ma pewne wady: Dodajcie atrybutyWszystkie property są jednakowo traktowane int Size vs int AccountBalance Dodajcie atrybuty ConsoleParam(object defaultValue) ConsoleValidator(Type validator) Zmieńcie metodę parsującą by dostosować ją do nowych atrybutów