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