2010-10-14 13 views
1

J'ai une application qui nécessite des mappages entre des valeurs de chaîne, donc essentiellement un conteneur qui peut contenir des paires de valeurs clés. Au lieu d'utiliser un dictionnaire ou une collection de valeurs-noms, j'ai utilisé un fichier de ressources que j'accède par programmation dans mon code. Je comprends que les fichiers de ressources sont utilisés dans des scénarios de localisation pour les implémentations multilingues et les goûts. Cependant j'aime leur nature fortement typée qui assure que si la valeur est changée l'application ne compile pas.Utilisation de fichiers * .resx pour stocker des paires de valeurs de chaîne

Cependant, je voudrais savoir s'il y a des inconvénients importants à utiliser un fichier * .resx pour un simple stockage de paire clé-valeur au lieu d'utiliser un type programmatique plus traditionnel.

Répondre

0

Il y a deux inconvénients que je peux penser hors du bleu:

  • il nécessite l'opération d'E/S pour lire une paire clé/valeur, ce qui peut entraîner une diminution significative du rendement,
  • si vous laissez la logique .Net standard pour résoudre les ressources de chargement, il essayera toujours de trouver le fichier correspondant à la propriété CultureInfo.CurrentUICulture; cela peut être problématique si vous décidez que vous voulez réellement avoir plusieurs resx-es (c'est-à-dire un par langue); Cela pourrait entraîner une dégradation supplémentaire des performances.

BTW. Ne pourriez-vous simplement créer des propriétés contenant classe d'aide ou de la structure, comme ça:

public static class GlobalConstants 
{ 
    private const int _SomeInt = 42; 
    private const string _SomeString = "Ultimate answer"; 

    public static int SomeInt 
    { 
     get 
     { 
      return _SomeInt; 
     } 
    } 

    public static string SomeString 
    { 
     get 
     { 
      return _SomeString; 
     } 
    } 
} 

Vous pouvez ensuite accéder à ces propriétés exactement de la même façon, en tant que fichiers de ressources (je suppose que vous êtes habitué à ce style) :

textBox1.Text = GlobalConstants.SomeString; 
textBox1.Top = GlobalConstants.SomeInt; 

Peut-être que ce n'est pas la meilleure chose à faire, mais je crois fermement que c'est encore mieux que d'utiliser le fichier de ressources pour que ...