105 votes

Création d'une méthode générique en C#

Je suis en train d'essayer de combiner un tas de méthodes similaires en une méthode générique. J'ai plusieurs méthodes qui renvoient la valeur d'une chaîne de requête, ou null si cette chaîne de requête n'existe pas ou n'est pas dans le format correct. Ce serait assez facile si tous les types étaient nativement nullables, mais je dois utiliser le type générique nullable pour les entiers et les dates.

Voici ce que j'ai maintenant. Cependant, il renverra un 0 si une valeur numérique est invalide, et malheureusement, c'est une valeur valide dans mes scénarios. Quelqu'un peut-il m'aider? Merci!

public static T GetQueryString(string key) where T : IConvertible
{
    T result = default(T);

    if (String.IsNullOrEmpty(HttpContext.Current.Request.QueryString[key]) == false)
    {
        string value = HttpContext.Current.Request.QueryString[key];

        try
        {
            result = (T)Convert.ChangeType(value, typeof(T));  
        }
        catch
        {
            //Impossible de convertir. Renvoyer la valeur par défaut...
            result = default(T);
        }
    }

    return result;
}

0voto

J'aime commencer avec une classe comme ceci class settings { public int X {get;set;} public string Y { get; set; } // repeat as necessary

 public settings()
 {
    this.X = defaultForX;
    this.Y = defaultForY;
    // repeat ...
 }
 public void Parse(Uri uri)
 {
    // parse values from query string.
    // if you need to distinguish from default vs. specified, add an appropriate property

 }

Cela a bien fonctionné sur des centaines de projets. Vous pouvez utiliser l'une des nombreuses autres solutions d'analyse pour repérer les valeurs.

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