Je voudrais stocker un tableau de chaînes unidimensionnel comme entrée dans mon appSettings
. Je ne peux pas simplement séparer les éléments avec ,
ou |
car les éléments eux-mêmes pourraient contenir ces caractères.
Je pensais à stocker le tableau en tant que JSON
puis à le désérialiser en utilisant le JavaScriptSerializer
.
Existe-t-il une "bonne"/meilleure façon de procéder?
(Mon JSON
idée semble un peu hacky)
Vous pouvez utiliser les AppSettings avec un System.Collections.Specialized.StringCollection
.
var myStringCollection = Properties.Settings.Default.MyCollection;
foreach (String value in myCollection)
{
// do something
}
Chaque valeur est séparée par une nouvelle ligne.
Voici une capture d'écran (allemand IDE mais cela pourrait être utile quand même))
Pour les entiers, j'ai trouvé le moyen suivant plus rapidement.
Tout d'abord, créez une clé appSettings avec des valeurs entières séparées par des virgules dans votre app.config.
<add key="myIntArray" value="1,2,3,4" />
Ensuite, divisez et convertissez les valeurs en tableau int à l'aide de LINQ
int[] myIntArray = ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray();
Pour les chaînes, c'est facile, ajoutez simplement ce qui suit à votre web.config
fichier:
<add key="myStringArray" value="fred,Jim,Alan" />
puis vous pouvez récupérer la valeur dans un tableau comme suit:
var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
Vous pouvez également envisager d'utiliser la section/Collection de configuration personnalisée à cet effet. Voici un exemple:
<configSections>
<section name="configSection" type="YourApp.ConfigSection, YourApp"/>
</configSections>
<configSection xmlns="urn:YourApp">
<stringItems>
<item value="String Value"/>
</stringItems>
</configSection>
Vous pouvez également vérifier cet excellent complément Visual Studio qui vous permet de concevoir graphiquement des sections de configuration .NET et génère automatiquement tout le code requis et une définition de schéma (XSD) pour eux.