C# Cz.7 Refleksja, Atrybuty krzysiek.fediuk@gmail.com
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 http://msdn.microsoft.com/ en-us/library/gg145045.aspx Ewentualnie resharper…
Przypomnienie - Kolekcje Pętla foreach IEnumerable List, Dictionary List<T>, Dictionary<T,U>
Przypomnienie – IO File, Directory StreamReader, BinaryReader
Przypomnienie – pytania?
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.
Refleksja w C# Type Kompletna informacja o typie: GetType() typeof() Nazwa Rodzaj Pola, metody, zdarzenia Atrybuty
Refleksja w C# MethodInfo ConstructorInfo Invoke Nazwa Parametry Zwracany typ Klasa gdzie była zadeklarowana Itp… ConstructorInfo Podobnie Invoke Wywołanie metody lub stworzenie obiektu
Pozostałe Typeof(string[]) Wartości enum’ów GetElementType() Wartości enum’ów Getery i Setery dla property Parametry generyczne
StackTrace Dobieranie się do metod wyżej Wykorzystywane w logowaniu new StackTrace(); Wykorzystywane w logowaniu st.GetFrame([1,2,,n]).Name I profilowaniu Kosztowne!
Pierwszy program Parametry linii poleceń Stwórzcie klasę ConsoleApp W 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
Atrybuty Metadane w kodzie Można dodawać praktycznie na wszystkim Przykłady [Serializable] [Obsolete] [STAThread] By definiować własne dziedziczymy z klasy Attribute Można dodać [AtributeUsage]
Do dzieła Poprzedni program ma pewne wady: Dodajcie atrybuty Wszystkie 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