2008-11-20 9 views
3

J'ai une liste des codes d'erreur je dois faire référence, un peu comme ceci:meilleure façon de valeur magasin/de recherche par nom paires

Code/Error Message 
A01 = whatever error 
U01 = another error 
U02 = yet another error type 

je reçois le code me retourné par un appel de service Web et j'ai besoin pour afficher ou obtenir l'erreur lisible. J'ai donc besoin d'une fonction quand je passe un code qui renvoie la description lisible. J'allais juste faire un cas choisi, mais je pensais que leur pourrait être un meilleur moyen. Quel est le meilleur moyen/le moyen le plus efficace de le faire?

+0

Dans quelle langue est-ce? SQL? C#? – nlaq

+0

les tags semblent indiquer asp.net et vb.net :) – warren

+0

Ah, je suis aveugle. Désolé: p – nlaq

Répondre

8

utiliser un dictionnaire, (en C#, mais le concept et les classes sont les mêmes):

// Initialize this once, and store it in the ASP.NET Cache. 
Dictionary<String,String> errorCodes = new Dictionary<String,String>(); 

errorCodes.Add("A01", "Whatever Error"); 
errorCodes.Add("U01", "Another Error"); 


// And to get your error code: 

string ErrCode = errorCodes[ErrorCodeFromWS]; 
+0

Vous nous avez downlisté! Pourquoi? Nos réponses n'étaient pas fausses. Une hashtable (dictionnaire, hashmap) devrait être bien connue ou au moins facile à chercher pour n'importe quel programmeur. D'ailleurs, il n'a pas dit s'il utilisait C#. – Cybis

+0

Notez qu'avec C# 3.0 et initialiseurs de collection l'initialisation du dictionnaire pourrait être beaucoup plus lisible. (Certes, il s'agit d'une question VB.NET - penser à haute voix.) Il est également utile d'envisager de mettre le mapping dans un fichier, donc il peut être mis à jour sans reconstruction. –

+0

Il ne l'est pas. Apparemment, il utilise VB.net. Je suis d'accord que vos réponses ne devraient pas être downvoted; mais ne devrait pas nécessairement être voté sauf si vous avez fourni plus de détails ou d'exemples pratiques. C'est juste mon opinion cependant. – nlaq

0

Vous utilisez un dictionnaire. Un dictionnaire utilise un hashmap en interne pour la performance, donc c'est bon à cet égard. Aussi, parce que vous voulez que cela se passe le plus rapidement possible par les sons de celui-ci, je l'initialiserais statiquement dans sa propre classe au lieu, par exemple, dans un fichier XML ou plus mince. Vous voudriez probablement quelque chose comme:

public static class ErrorCodes 
{ 
    private static Dictonary<string, string> s_codes = new Dicontary<string, string>(); 
    static ErrorCodes() 
    { 
     s_codes["code"] = "Description"; 
     s_codes["code2"] = "Description2"; 
    } 

    public static string GetDesc(string code) 
    { 
     return s_codes[code]; 
    } 
} 

De cette façon, si vous vouliez déplacer l'arrière vers un fichier au lieu d'être statique, alors vous pouvez.

Questions connexes