View Full Version : [C#]Passare variabili ad app.config
RaouL_BennetH
30-11-2007, 11:47
Ciao a tutti :)
E' possibile fare una cosa del genere?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MyClass.Properties.Settings.projectConnectionString"
connectionString="server=variabile;user id=variabile...etc.." />
</connectionStrings>
</configuration>
Cioè, non avere valori prefissati nel file app.config ma passargli delle variabili di volta in volta. Questo per cercare di utilizzare un solo file per diverse applicazioni.
Grazie :)
RaouL.
ma a sto punto a cosa ti servirebbe il file di configurazione? :confused:
^TiGeRShArK^
30-11-2007, 12:22
non so se in questo caso ti può servire..
ma io avevo fatto questa classettina per gestire la configurazione in C# dato che sentivo la mancanza delle properties di Java e, dopo una breve ricerca, non avevo trovato niente di simile...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileSystemListener
{
public class Properties
{
private static Dictionary<string, string> properties = new Dictionary<string, string>();
private static string filename = "config.properties";
private static bool isLoaded = false;
private static void loadProperties()
{
if (isLoaded) {return; }
else
{
StreamReader reader = File.OpenText(filename);
string line = "";
while ((line = reader.ReadLine()) != null)
{
string[] splittedLine = line.Split('=');
string key = splittedLine[0];
string value = splittedLine[1];
properties.Add(key, value);
}
reader.Close();
isLoaded = true;
}
}
public static void setPropertiesFile(string filename)
{
Properties.filename = filename;
}
public static string get(string key)
{
loadProperties();
return properties[key];
}
public static void add(string key, string value)
{
loadProperties();
properties.Add(key, value);
}
public static void set(string key, string value)
{
loadProperties();
properties[key] = value;
}
public static void save()
{
StreamWriter writer = File.CreateText(filename);
foreach (string key in properties.Keys)
{
writer.Write(key + "=" + properties[key] + '\n');
}
writer.Flush();
writer.Close();
}
}
}
RaouL_BennetH
30-11-2007, 12:29
@0rph3n
Sono alla ricerca di un modo per non avere file in chiaro sul client. Se metto server, nomedb, user id e password nel file app.config, sul client dell'utente sono in chiaro. E poi per avere un unico app.config da poter usare per tutti.
@^TiGeRShArK^
ma per le properties di Java cosa intendi?
Pensando al C# a me come properties viene in mente:
private string _stringa;
public string Stringa
{
get { return _stringa; }
set { stringa = value; }
}
//da qualche parte nel codice....
Classe classe = new Classe();
classe.Stringa = "abcde";
//
Grazie per l'esempio, ho bisogno di ragionarci un pò su :)
^TiGeRShArK^
30-11-2007, 12:39
@0rph3n
Sono alla ricerca di un modo per non avere file in chiaro sul client. Se metto server, nomedb, user id e password nel file app.config, sul client dell'utente sono in chiaro. E poi per avere un unico app.config da poter usare per tutti.
@^TiGeRShArK^
ma per le properties di Java cosa intendi?
Pensando al C# a me come properties viene in mente:
private string _stringa;
public string Stringa
{
get { return _stringa; }
set { stringa = value; }
}
//da qualche parte nel codice....
Classe classe = new Classe();
classe.Stringa = "abcde";
//
Grazie per l'esempio, ho bisogno di ragionarci un pò su :)
si infatti.. :D
Le properties di Java che intendo io in realtà sono un meccanismo per gestire la configurazione.
Non è altro che una coppia di chiavi-valori che è possibile leggere da un file in questo formato:
host=192.168.0.1
username=pippo
password=pluto
semplicemente caricando il file di properties e accedendo tramite dei getters & setters.
Nella mia versione delle properties per il C# basta fare così:
Properties.loadProperties(); //La prima volta per caricare le properties, quindi di solito nel costruttore
string username = Properties.get("username");
string password = Properties.get("password");
e così via.
è anche possibile modificare le properties tramite il metodo set, aggiungerne altre tramite il metodo add e salvare il tutto sullo stesso file...
...ora che ci penso mi sò dimenticato il metodo remove... :fagiano:
ma è una banalità da implementare :D
uReverendo
30-11-2007, 13:42
Ciao a tutti :)
E' possibile fare una cosa del genere?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MyClass.Properties.Settings.projectConnectionString"
connectionString="server=variabile;user id=variabile...etc.." />
</connectionStrings>
</configuration>
Cioè, non avere valori prefissati nel file app.config ma passargli delle variabili di volta in volta. Questo per cercare di utilizzare un solo file per diverse applicazioni.
Grazie :)
RaouL.La classe ConfigurationManager può fare a caso tuo.
http://msdn2.microsoft.com/en-us/library/system.configuration.configurationmanager(VS.80).aspx
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.