serializzare che passione

di Marco Leoncini, in asp.net,

in questo ultimo mesetto di lavoro sto realizzando un sito in più lingue ho deciso vuoi per comodità vuoi per manutenzione di creare un database per ogni lingua, da quà la necessita di cambiare la stringa di connessione al "volo".

ho deciso di memorizzare i dati in una classe ad hoc e poi serializzarla in un file .config (un banalissimo xml :))

partiamo con la classe:

using System;
using System.Xml;
using System.Xml.Serialization;

namespace Sito.WebModules.Configuration
{

public class LanguageSettings
{
public string LanguageName;
public string LanguageConnectionString;
}

 public class ModuleSettings
{
private string connectionString;
private string galleryPath;
private LanguageSettings [] connectionString2;

public ModuleSettings()
{ }

[XmlElement]
public string ConnectionString
{
get
{
return connectionString;
}
set
{
connectionString = value;
}
}
[XmlElement]
public string GalleryPath
{
get
{
return galleryPath;
}
set
{
galleryPath = value;
}
}
[XmlArrayItem(ElementName= "LanguageSettings", IsNullable=true, Type = typeof(LanguageSettings) )]
[XmlArray]
public LanguageSettings [] ConnectionString2
{
get
{
return connectionString2;
}
set
{
connectionString2 = value;
}
}


}
}

 

per prima cosa creo una mia classe che espone semplicemente due propietà pubbliche

in una seconda classe "ModuleSettings" definisco una propietà Connectionstring2 (fantasia vero?) che restituisce un array di "LanguageSettings" indico al serializzatore il modo in cui trattare la propietà pubblica, in pratica la mia propetà Connectionstring2 verrà serializzata come un "albero" di item chiamati LanguageSettings contenente la una stringa di connessione per ogni linguaggio

alla fine il file config dovrebbe assomigliare a qualcosa del genere

<?xml version="1.0" ?>
<ModuleSettings xmlns:xsi="http://www.w3.org/2001/XMLShema-Istance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ConnectionString>server=(local) ;database=barsottini;uid=sa;pwd=pop;</ConnectionString>
<GalleryPath>/immagini/</GalleryPath>
<XboxGalleryPath>Xbox/</XboxGalleryPath>
<ConnectionString2>
<LanguageSettings>
<LanguageName>italiano</LanguageName>
<LanguageConnectionString>server=(local) ;database=barsottini;uid=sa;pwd=pop;</LanguageConnectionString>
</LanguageSettings>
<LanguageSettings>
<LanguageName>inglese</LanguageName>
<LanguageConnectionString>server=(local) ;database=barsottini;uid=sa;pwd=pop;</LanguageConnectionString>
</LanguageSettings>
</ConnectionString2>
</ModuleSettings>

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese