18

Apr

Silverlight 4: utilizzare un file di configurazione

In una "normale" applicazione .NET, leggere la configurazione dell'appllicazione da un file di configurazione grazie alla classe System.Configuration.ConfigurationManager è quasi sempre l'operazione più comoda da usare; in Silverlight, però, il namespace System.Configuration non è implementato. In questo tip vedremo come ovviare al problema creando una nostra classe in grado di recuperare le impostazioni dell'applicazione.

Aggiungiamo al progetto un nuovo file XML e rinominiamolo in app.config, impostandone la proprietà Build Action al valore Resource.

Attribuiamo al file di configurazione uno schema predefinito, che richiama quello classico di un normale file di configurazione.







Vediamo quindi come implementare un ConfigurationManager per Silverlight sfruttando LINQ to XML

Imports System.Xml.Linq
Imports System.Reflection
Imports System.Collections.Generic
Imports System.Windows.Resources

Public Class ConfigurationManager

Public Property AppSettings As Dictionary(Of String, String)

Public Sub New()
AppSettings = New Dictionary(Of String, String)
LoadSettings()
End Sub

Private Sub LoadSettings()
Dim AssemblyName As String = Assembly.GetExecutingAssembly().FullName
AssemblyName = AssemblyName.Substring(0, AssemblyName.IndexOf(","))
Dim ConfigUrl As String = String.Format(AssemblyName & ";component/app.config")
Dim ConfigFile As StreamResourceInfo = Application.GetResourceStream(New Uri(ConfigUrl, UriKind.Relative))

If ConfigFile IsNot Nothing AndAlso ConfigFile.Stream IsNot Nothing Then
Dim doc As XDocument = XDocument.Load(ConfigFile.Stream)

For Each element As XElement In doc.Descendants("appSettings").DescendantNodes()
AppSettings.Add(element.Attribute("key").Value, element.Attribute("value").Value)
Next
End If
End Sub

End Classs

by Andrea Romeo on 4/18/2011
Post archive