187 votes

Comment rendre le type de retour d'une méthode générique ?

Existe-t-il un moyen de rendre cette méthode générique afin que je puisse renvoyer une chaîne de caractères, un bool, un int ou un double ? Actuellement, elle renvoie une chaîne de caractères, mais si elle est capable de trouver "true" ou "false" comme valeur de configuration, j'aimerais renvoyer un bool par exemple.

    public static string ConfigSetting(string settingName)
    {  
         return ConfigurationManager.AppSettings[settingName];
    }

1voto

Sid Points 91

Veuillez essayer le code ci-dessous :

public T? GetParsedOrDefaultValue<T>(string valueToParse) where T : struct, IComparable
{
 if(string.EmptyOrNull(valueToParse))return null;
  try
  {
     // return parsed value
     return (T) Convert.ChangeType(valueToParse, typeof(T));
  }
  catch(Exception)
  {
   //default as null value
   return null;
  }
 return null;
}

-1voto

Adam Howard Points 9
 private static T[] prepareArray<T>(T[] arrayToCopy, T value)
    {
        Array.Copy(arrayToCopy, 1, arrayToCopy, 0, arrayToCopy.Length - 1);
        arrayToCopy[arrayToCopy.Length - 1] = value;
        return (T[])arrayToCopy;
    }

Je faisais cela dans tout mon code et je voulais un moyen de le mettre dans une méthode. Je voulais le partager ici car je n'ai pas eu à utiliser Convert.ChangeType pour ma valeur de retour. Ce n'est peut-être pas une bonne pratique, mais cela a fonctionné pour moi. Cette méthode prend un tableau de type générique et une valeur à ajouter à la fin du tableau. Le tableau est ensuite copié avec la première valeur enlevée et la valeur prise dans la méthode est ajoutée à la fin du tableau. Enfin, je retourne le tableau générique.

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