TryParse générique : Explorer des approches alternatives
Essayer d'implémenter une extension générique à l'aide de « TryParse » pour valider les conversions de chaînes vers un type donné peut poser des problèmes défis dus au manque de « TryParse » comme méthode d’interface. Cet article explore des solutions potentielles pour surmonter cet obstacle.
Une approche suggérée par la communauté utilise la classe TypeDescriptor. Cette classe fournit un moyen d'obtenir un convertisseur pour un type spécifique. En appelant la méthode ConvertFromString sur le convertisseur récupéré, on peut convertir la chaîne d'entrée dans le type souhaité. Cette méthode gère également les exceptions qui peuvent survenir lors de la conversion.
public static T Convert<T>(this string input) { try { var converter = TypeDescriptor.GetConverter(typeof(T)); if(converter != null) { // Cast ConvertFromString(string text) : object to (T) return (T)converter.ConvertFromString(input); } return default(T); } catch (NotSupportedException) { return default(T); } }
Alternativement, on peut modifier le code pour accepter un type cible comme paramètre, éliminant ainsi le besoin de génériques. Cette approche offre plus de contrôle sur le processus de conversion.
public static bool Is(this string input, Type targetType) { try { TypeDescriptor.GetConverter(targetType).ConvertFromString(input); return true; } catch { return false; } }
Bien que l'approche basée sur les exceptions puisse sembler non conventionnelle, elle offre une solution viable au défi que représente la réalisation de conversions de chaînes génériques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!