65 votes

.NET peut-il charger et analyser un fichier de propriétés équivalent à la classe Java Properties ?

Existe-t-il un moyen simple en C# de lire un fichier de propriétés dont chaque propriété se trouve sur une ligne distincte, suivie d'un signe égal et de la valeur, comme dans le cas suivant :

ServerName=prod-srv1
Port=8888
CustomProperty=Any value

En Java, la classe Propriétés gère facilement cette analyse syntaxique :

Properties myProperties=new Properties();
FileInputStream fis = new FileInputStream (new File("CustomProps.properties"));
myProperties.load(fis);
System.out.println(myProperties.getProperty("ServerName"));
System.out.println(myProperties.getProperty("CustomProperty"));

Je peux facilement charger le fichier en C# et analyser chaque ligne, mais existe-t-il un moyen intégré d'obtenir facilement une propriété sans avoir à analyser moi-même le nom de la clé et le signe égal ? Les informations C# que j'ai trouvées semblent toujours privilégier le XML, mais il s'agit d'un fichier existant que je ne contrôle pas et je préférerais le conserver dans le format existant, car il sera plus long de demander à une autre équipe de le modifier en XML que d'analyser le fichier existant.

2voto

Carl Thronson Points 11

La vraie réponse est non (du moins pas en soi). Vous pouvez toujours écrire votre propre code pour le faire.

1voto

casperOne Points 49736

Je ne connais pas de moyen intégré pour le faire. Cependant, cela semble assez facile à faire, puisque les seuls délimiteurs dont vous devez vous préoccuper sont le caractère de nouvelle ligne et le signe égal.

Il serait très facile d'écrire une routine qui renverrait une NameValueCollection ou un IDictionary en fonction du contenu du fichier.

1voto

Adam Ralph Points 15420

Il y a quelques exemples de classe PropertyBag sur le web qui peuvent faire cela, par ex. celui-ci .

1voto

Jason Weden Points 76

Vous pouvez également utiliser la syntaxe de propriété automatique C# avec des valeurs par défaut et un ensemble restrictif. L'avantage est que vous pouvez alors avoir n'importe quel type de données dans votre "fichier" de propriétés (qui est maintenant une classe). L'autre avantage est que vous pouvez utiliser la syntaxe de propriété C# pour invoquer les propriétés. Cependant, il suffit de quelques lignes pour chaque propriété (une dans la déclaration de propriété et une dans le constructeur) pour que cela fonctionne.

using System;
namespace ReportTester {
   class TestProperties
   {
        internal String ReportServerUrl { get; private set; }
        internal TestProperties()
        {
            ReportServerUrl = "http://myhost/ReportServer/ReportExecution2005.asmx?wsdl";
        }
   }
}

1voto

Joel Coehoorn Points 190579

C# utilise généralement des fichiers de configuration basés sur le xml plutôt que le fichier *.ini-style comme vous l'avez dit, donc il n'y a rien d'intégré pour gérer cela. Cependant, Google renvoie un nombre de résultats prometteurs .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X