Programování v jazyku C# II. 9.kapitola
Reflexe Způsob získání informací o software za běhu Umožňuje získat z.net assembly info o jmenných prostorech třídách, strukturách a rozhraních metodách a datech atributech Umožňuje volat metody typů, používat data,... 2/20
Třída System.Reflection.Assembly Reprezentuje assembly Získání instance ke známému typu Type.Assembly ze souboru Assembly.LoadFrom(soubor) k vykonávanému kódu Assembly.GetExecutingAssembly Poskytuje přístup k typům GetTypes() k atributům GetCustomAttributes() 3/20
Třída System.Activator Obsahuje metody pro vytvorření instance z typu CreateInstance(type) ze jména typu CreateInstanceFrom(string, string) jméno assembly, jméno typu 4/20
Pluginy zásuvné moduly Umožňují rozšiřovat funkčnost programu bez zásahu do programu přidáním.dll knihoven V.NET snadná implementace reflexe rozhraní atributy 5/20
Příklad rozhraní public class interface IPlugin { string Spust(); } 6/20
Příklad pluginu Při psaní knihovny s pluginy nutno přidat referenci na aplikaci (na knihovnu s definicí rozhraní) public class Plugin1 : IPlugin { public string Spust() { return "Spusteny Plugin1"; } } 7/20
Příklad aplikace... string[] soubory = Directory.GetFiles(adresarPlugin,"*.dll"); foreach(string soubor in soubory) { Assembly assembly = Assembly.LoadFrom(soubor); Type[] typy = assembly.gettypes(); foreach(type typ in typy) { if(typ.getinterface("iplugin")!= null) { Console.WriteLine(typ.Name); IPlugin plugin = (IPlugin) Activator.CreateInstance(typ); Console.WriteLine(plugin.Spust()); } } }... 8/20
Nastavení a konfigurace Nastavení ukládá nastavení aplikace či uživatelské nastavení dědí se od ApplicationSettingBase automaticky generovaná třída položky jsou typované aplikační nastavení nelze měnit za běhu uživatelské nastavení lze měnit za běhu Konfigurace ovlivňuje běh aplikace obdoba web.config Soubor <jméno aplikace>.config 9/20
Třída ApplicationSettingBase Metody Reload nahraje nastavení ze souboru Reset načte defaultní hodnoty Save uloží aktuální verzi Události PropertyChanged při změně hodnoty SettingsLoaded/Saving nastavení bylo načteno/je ukládáno 10/20
Jmenný prostor System.Configuration Třída Configuration přístup k jednotlivým sekcím konfigurace Třída ConfigurationSection reprezentuje sekci v konfigu Třída ConfigurationManager třída pro manipulaci s konfigurací umožňuje získat instanci Configuration 11/20
Zdroje Možnost zahrnout do aplikace externí data Jazykově nezávislé zdroje aplikační zdroje (ikony, bitmapy, zvuky,... ) součástí hlavní assembly Jazykově závislé zdroje popisky UI, hlášky,... výchozí verze součástí hlavní assembly další jazyky v externích satelitních assembly 12/20
Přímo podporované zdroje Řetězce Obrázky Ikony Zvuky Soubory 13/20
Generování a linkování zdroju Program resgen.exe kompiluje zdroje do souboru *.resources vstupy textový soubor formát jméno=hodnota *.resx soubor xml soubor (podpora v MSVS) Program al.exe linkování assembly možnost vložit *.resources Přímá podpora v MSVS vlastnost Build Action: Embedded Resource 14/20
Zdroje v MSVS Formuláře si přímo generují.resx soubory automaticky se přidávají do assembly Automaticky generovaná třída Resources soubory Resources.resx a Resources.Designer.cs položky jsou typované snadné vytváření/používání 15/20
Třída ResourceManager Hlavní třída pro práci se zdroji Metody GetString načte řetězec ze zdroje GetObject načte objekt ze zdroje GetStream vrátí stream GetResourceSet vrátí požadovanou jazykovou mutaci zdrojů 16/20
Lokalizace zdrojů Více souborů, každý v jiné jazykové mutaci soubor.resources soubor.en.resources soubor.cs-cz.resources Mohou být součástí hlavní assembly přidání nové jazykové mutace = nutno přeložit a vydat novou distribuci Mohou být umístěny v satelitních assembly v hlavní assembly pouze výchozí jazyk pro přidání verze stačí přidat odpovídající assembly 17/20
Satelitní assembly Vytvoří se z resources souboru Satelitní assembly musí mít shodnou verzi s hlavní assembly Možnost umístit do GAC Příklad vytvoření al.exe /t:lib /embed:aplikace.form1.cs.resources /culture:cs /out:aplikace.resources.dll /template:aplikace.exe 18/20
Lokalizace formulářů Podpora v MSVS V properties vybrat jazyk Přepsat názvy kontrolek Automaticky se vygeneruje.resx Automaticky se vytvoří satelitní assembly Možnost kombinovat s externími soubory 19/20
Konec 20/20