Při rozhodování o tom, kam ukládat nastavení aplikace je rozhodně dobré zvážit, jestli nepostačí mechanismus .NET frameworku vestavený - My.Settings. To je velmi snadný způsob, jak se k nastavení dostat, nemusíte řešit serializaci ani deserializaci a pole, která chcete ukládat, si jednoduše naklikáte. Designer Settings objektu (ke kterému se přistupuje přes My.Settings ve Visual Basicu a Properties.Settings.Default v C#) se nachází na kartě Settings v nastavení projektu. Application Settings mají samozřejmě také nevýhody - jmenovitě například nevestavěnou podporu pro verzování, ale jedná se o vývojářem rozšiřitelné třídy, takže si to každý může dopsat sám. Application Settings http://msdn.microsoft.com/en-us/library/... My.Settings ve Visual Basicu http://msdn.microsoft.com/en-us/library/... Pokud se přesto rozhodnete nastavení aplikace zajišťovat sám, doporučuji Vám přiklonit se raději k XML (či XAML) než INI, CSV a podobně. Nenechte se tím XAMLem zmást, je to sice deklarativní způsob návrhu uživatelských rozhraní WPF, ale tam jeho použití zdaleka nekončí. Pokud si do WinForms aplikace nareferencujete potřebné knihovny WPF, můžete pomocí třídy XamlServices serializovat libovolný objekt do XAMLu. Třída XamlServices http://msdn.microsoft.com/en-us/library/... Samotné XML pak též není od věci, ale budete s ním mít o něco více práce. Budete si muset získané hodnoty parametrů a podobně sám přetypovávat a hlavně budete muset napsat kód dost flexibilní na to, aby se uměl vypořádat s rozbitým XML vstupem (nejen syntakticky, ale například i z pohledu kdy deserializujete hodnotu 15 pro pole, které lze nastavit od 1 do 8 - XML soubory může samozřejmě editovat i nějaký zvědavý uživatel, ne pouze Váš software). Visual Basic má skvělou podporu pro XML, můžete ho zapsat přímo do kódu následovně:
Dim myXmlElement As XElement = <Settings>
<Users>
<User FirstName="Alex" LastName="Clarai" />
</Users>
</settings>
A přistupovat k němu pomocí speciální syntaxe: myXmlElement.<Users>.<User>.FirstOrDefault().@FirstName (kombinace speciálního acesoru a extension metody třídy Enumerable). Můžete samozřejmě použít i standardní prostředky přístupu k uzlům (metody tříd XElement a XDocoument), ale pokud vyvíjíte ve VB, doporučuji přímé zápisy XML používat (například na šablonu pro default settings, pokud nabídnete uživateli nastavení resetovat nebo pokud budete potřebovat fallback když soubor nastavení chybí). Můj osobní názor je takový, že to přispívá k čitelnosti kódu, ale preference má samozřejmě každý jiné. Dále budete muset dát pozor na to, aby XML bylo správně strukturované. Pokud vím, lze Visual Studio nějak donutit, aby XML dokumenty validovat proti dané DTD, možná pomocí XSD, přesně nevím. Něco k XML ve Visual Basicu http://msdn.microsoft.com/en-us/library/... Ovšem jak vidíte, udělat vlastní správu XML nastavení pořádně není žádná legrace, a proto je možné také využít XML serializace. Zde opět připomenu XAML serializaci, ale pokud si nechcete do projektu tahat nic z Presentation Foundation, XML serializace je možnost, vypadá asi takto:
Public Class clsProduct
Private mstrName As String
Private mstrDescription As String
Private mintQty As Integer
Public Property Name() As String
Get
Name = mstrName
End Get
Set(ByVal Value As String)
mstrName = Value
End Set
End Property
Public Property Description() As String
Get
Description = mstrDescription
End Get
Set(ByVal Value As String)
mstrDescription = Value
End Set
End Property
Public Property Qty() As Integer
Get
Qty = mintQty
End Get
Set(ByVal Value As Integer)
mintQty = Value
End Set
End Property
End Class
' serializace
Dim objStreamWriter As New StreamWriter("C:\Product.xml")
Dim x As New XmlSerializer(p.GetType)
x.Serialize(objStreamWriter, p)
objStreamWriter.Close()
Kód zobrazuje jen klíčové prvky (strukturu serializované třídy a samotnou serializaci), pro větší obraz následujte zdroj, ze kterého jsem čerpal či si vyhledejte další informace. Zdroj: http://support.microsoft.com/kb/316730
|