Logo UGIdotNET

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.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Key1" value="Value1"/>
    <add key="Key2" value="Value2"/>
  </appSettings>
</configuration>

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

Qui trovate in allegato il relativo codice di esempio disponibile in C# e VB.Net.

Technorati tags: 
Autore: Andrea Romeo
Data: 07 febbraio 2011
Ultimo aggiornamento: 06 febbraio 2011
Categorie:  Silverlight
Tag:  silverlight LINQ to Xml

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185