Je suis en train de créer une extension générique qui utilise 'TryParse" pour vérifier si une chaîne est un type donné:
public static bool Is<T>(this string input)
{
T notUsed;
return T.TryParse(input, out notUsed);
}
ce ne compile pas car il ne peut pas résoudre le symbole 'TryParse'
Ce que je comprends, 'TryParse ne fait pas partie de l'interface.
Est-ce possible de le faire?
Mise à jour:
En utilisant les réponses ci-dessous je viens avec:
public static bool Is<T>(this string input)
{
try
{
TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
}
catch
{
return false;
}
return true;
}
Il fonctionne très bien, mais je pense que l'utilisation des exceptions dans cette façon de ne pas se sentir le droit de m'.
Update2:
Modifié pour transmettre de type plutôt que d'utiliser des génériques:
public static bool Is(this string input, Type targetType)
{
try
{
TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
return true;
}
catch
{
return false;
}
}