Il livello di utenza a cui si riferisce questo codice è sicuramente "Beginner" (quantomeno su .NET), ma a me è servito parecchio, percui se a qualcuno dovesse servire...
Delle righe postate praticamente nulla, o quasi, è farina del mio sacco(!), ho solo messo insieme, forse addirittura un annetto fa, gli esempi di due articoli (chiedo scusa agli autori, ma proprio non ricordo quali fossero...) presenti in UGIdotNET in modo da poter leggere e scrivere sul file .config dell'applicazione, visto che di base la classe AppSettings prevede solo la lettura dei valori già presenti.
Inoltre risulta particolarmente comodo il fatto che:
a) se la Key non esiste non viene sollevata un eccezione e si può pertanto specificare alla funzione stessa un valore di default per questo caso;
b) se in una revisione della nostra applicazione inseriamo nuovi parametri, possiamo semplicemente inserirli a run-time senza dover editare il file.
Dimenticavo... attualmente non sono gestite eventuali eccezioni, "lasciandole" alla funzione chiamante. Inoltre, così com'è la classe attualmente presuppone l'esistenza del tag appSettings nel file.config, pena un eccenzioncella... (tradotto: volendo e avendo tempo, da migliorare ce n'è eccome!)
Comunque ecco la classe coi sue metodi statici, sono come al solito grato a chiunque vorrà migliorare, criticare (costruttivamente) o dire la sua su quanto postato!
Public
NotInheritable Class EditAppConfig
Public Shared Function GetValue(ByVal key_CaseSensitive As String) As String
Dim str As String = ""
Dim doc As New Xml.XmlDocument
doc.Load(
String.Format("{0}.config", Application.ExecutablePath))
Dim NodeKey As String = "//appSettings/add[@key='" + key_CaseSensitive + "']/@value"
If Not doc.DocumentElement.SelectSingleNode(NodeKey) Is Nothing Then
str = doc.DocumentElement.SelectSingleNode(NodeKey).Value
End If
Return str
End Function
Public Shared Function GetValue(ByVal key_CaseSensitive As String, ByVal defaultValue As String) As String
Dim str As String = defaultValue
Dim doc As New Xml.XmlDocument
doc.Load(
String.Format("{0}.config", Application.ExecutablePath))
Dim NodeKey As String = "//appSettings/add[@key='" + key_CaseSensitive + "']/@value"
If Not doc.DocumentElement.SelectSingleNode(NodeKey) Is Nothing Then
str = doc.DocumentElement.SelectSingleNode(NodeKey).Value
End If
Return str
End Function
Public Shared Sub SetValue(ByVal key_CaseSensitive As String, ByVal keyValue As String)
Dim doc As New Xml.XmlDocument
doc.Load(
String.Format("{0}.config", Application.ExecutablePath))
Dim nodeKey As String = "//appSettings/add[@key='" + key_CaseSensitive + "']/@value"
If Not doc.DocumentElement.SelectSingleNode(nodeKey) Is Nothing Then
doc.DocumentElement.SelectSingleNode(nodeKey).Value = keyValue
Else
Dim addElement As Xml.XmlElement = doc.CreateElement("add")
Dim attrkey As Xml.XmlAttribute = doc.CreateAttribute("key")
attrkey.Value = key_CaseSensitive
Dim attrvalue As Xml.XmlAttribute = doc.CreateAttribute("value")
attrvalue.Value = keyValue
addElement.Attributes.Append(attrkey)
addElement.Attributes.Append(attrvalue)
doc.DocumentElement.SelectSingleNode("//appSettings").AppendChild(addElement)
End If
doc.Save(
String.Format("{0}.config", Application.ExecutablePath))
End Sub
End
Class