Dans mon web.config
fichier que j'ai
<appSettings>
<add key="Service1URL1" value="http://managementService.svc/"/>
<add key="Service1URL2" value="http://ManagementsettingsService.svc/HostInstances"/>
....lots of keys like above
</appSettings>
Je veux obtenir la valeur de la clé qui commence par Service1URL
et passez la valeur à string[] repositoryUrls = { ... }
dans ma classe C #. Comment puis-je atteindre cet objectif?
J'ai essayé quelque chose comme ça mais je n'ai pas pu saisir les valeurs:
foreach (string key in ConfigurationManager.AppSettings)
{
if (key.StartsWith("Service1URL"))
{
string value = ConfigurationManager.AppSettings[key];
}
string[] repositoryUrls = { value };
}
Soit je le fais mal, soit je manque quelque chose ici. Toute aide serait vraiment appréciée.
J'utiliserais un peu LINQ:
string[] repositoryUrls = ConfigurationManager.AppSettings.AllKeys
.Where(key => key.StartsWith("Service1URL"))
.Select(key => ConfigurationManager.AppSettings[key])
.ToArray();
Vous écrasez le tableau pour chaque itération
List<string> values = new List<string>();
foreach (string key in ConfigurationManager.AppSettings)
{
if (key.StartsWith("Service1URL"))
{
string value = ConfigurationManager.AppSettings[key];
values.Add(value);
}
}
string[] repositoryUrls = values.ToArray();
J'ai défini une classe pour contenir les variables qui m'intéressent et parcourir les propriétés et rechercher quelque chose dans app.config pour correspondre.
Ensuite, je peux consommer l'instance comme je le souhaite. Pensées?
public static ConfigurationSettings SetConfigurationSettings
{
ConfigurationSettings configurationsettings = new ConfigurationSettings();
{
foreach (var prop in configurationsettings.GetType().GetProperties())
{
string property = (prop.Name.ToString());
string value = ConfigurationManager.AppSettings[property];
PropertyInfo propertyInfo = configurationsettings.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(configurationsettings, value, null);
}
}
return configurationsettings;
}