Oui c'est possible, mais AFAIK seulement par Reflection. Le code suivant devrait faire ce que vous avez besoin (lire ci-dessous pour l'utilisation):
public static string SetConnectionString(Type assemblyMember,
Type settingsClass,
string newConnectionString,
string connectionStringKey)
{
Type typSettings = Type.GetType(Assembly.CreateQualifiedName(assemblyMember.Assembly.FullName, settingsClass.FullName));
if (typSettings == null)
{
return null;
}
PropertyInfo prpDefault = typSettings.GetProperty("Default", BindingFlags.Static | BindingFlags.Public);
if (prpDefault == null)
{
return null;
}
object objSettings = prpDefault.GetValue(null, null);
if (objSettings == null)
{
return null;
}
// the default property, this[], is actually named Item
PropertyInfo prpItem = objSettings.GetType().GetProperty("Item", BindingFlags.Instance | BindingFlags.Public);
if (prpItem == null)
{
return null;
}
object[] indexerName = { connectionStringKey };
string oldConnectionString = (string)prpItem.GetValue(objSettings, indexerName);
prpItem.SetValue(objSettings, newConnectionString, indexerName);
return oldConnectionString;
}
assemblyMember
est le type d'appel
settingsClass
est le type de vos paramètres de classe
newConnectionString
est la chaîne complète pour définir
connectionStringKey
est le nom de la chaîne de connexion que vous avez définie dans les paramètres de votre application
Vous devriez appeler cette méthode dès que possible après le démarrage de votre application, de préférence dans la méthode Main().
Re votre "par développeur" - Je vais ajouter une pensée supplémentaire ... –