Beim Versuch, eine generische Erweiterungsmethode zum Überprüfen von Zeichenfolgenwerten zu erstellen, ist ein Problem aufgetreten, bei dem „TryParse“ in keiner definiert war Schnittstelle und suchte nach einer alternativen Lösung.
Alternativer Ansatz unter Verwendung TypeDescriptor
Die TypeDescriptor-Klasse bietet eine Möglichkeit, einen Typkonverter für einen bestimmten Datentyp abzurufen. Dieser Konverter kann zum Konvertieren von Zeichenfolgen in und aus anderen Typen verwendet werden. Hier ist eine aktualisierte Version Ihres Codes:
public static bool Is(this string input, Type targetType) { try { TypeDescriptor.GetConverter(targetType).ConvertFromString(input); return true; } catch { return false; } }
In dieser Version können Sie jeden Zieltyp übergeben und es wird versucht, die Zeichenfolge mit dem entsprechenden Konverter in diesen Typ zu konvertieren. Wenn die Konvertierung erfolgreich ist, gibt die Methode „true“ zurück; andernfalls wird false zurückgegeben.
Ausnahmen und Alternativen
Während der ausnahmebasierte Ansatz funktioniert, bevorzugen Sie möglicherweise eine robustere Option. Anstatt Ausnahmen zu verwenden, könnten Sie ein Nullable
Alternativ können Sie Überladungen für gängige Typen wie int, double und DateTime erstellen und benutzerdefinierte Logik für jeden Typ definieren. Dies würde die Notwendigkeit einer generischen Implementierung beseitigen und effizientere und typsicherere Konvertierungen ermöglichen.
Das obige ist der detaillierte Inhalt vonWie kann ich allgemein testen, ob eine Zeichenfolge in einen bestimmten Typ geparst werden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!