Generisches TryParse: Erkundung alternativer Ansätze
Der Versuch, eine generische Erweiterung mithilfe von „TryParse“ zu implementieren, um String-Konvertierungen in einen bestimmten Typ zu validieren, kann problematisch sein Herausforderungen aufgrund des Fehlens von „TryParse“ als Schnittstellenmethode. In diesem Artikel werden mögliche Lösungen zur Überwindung dieses Hindernisses untersucht.
Ein von der Community vorgeschlagener Ansatz nutzt die TypeDescriptor-Klasse. Diese Klasse bietet eine Möglichkeit, einen Konverter für einen bestimmten Typ abzurufen. Durch Aufrufen der ConvertFromString-Methode für den abgerufenen Konverter kann die Zeichenfolgeneingabe in den gewünschten Typ konvertiert werden. Diese Methode behandelt auch Ausnahmen, die während der Konvertierung auftreten können.
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); } }
Alternativ kann man den Code so ändern, dass er einen Zieltyp als Parameter akzeptiert, wodurch die Notwendigkeit von Generika entfällt. Dieser Ansatz bietet mehr Kontrolle über den Konvertierungsprozess.
public static bool Is(this string input, Type targetType) { try { TypeDescriptor.GetConverter(targetType).ConvertFromString(input); return true; } catch { return false; } }
Obwohl der ausnahmebasierte Ansatz unkonventionell erscheinen mag, bietet er eine praktikable Lösung für die Herausforderung, generische String-Konvertierungen durchzuführen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine generische TryParse-Methode in C# implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!