
汎用 TryParse: 代替アプローチの探索
指定された型への文字列変換を検証するために「TryParse」を使用して汎用拡張機能を実装しようとすると、問題が発生する可能性がありますインターフェイス メソッドとして「TryParse」がないため、課題が生じます。この記事では、この障害を克服するための潜在的な解決策を検討します。
コミュニティによって提案されたアプローチの 1 つは、TypeDescriptor クラスを利用します。このクラスは、特定の型のコンバーターを取得する方法を提供します。取得したコンバーターで ConvertFromString メソッドを呼び出すことにより、文字列入力を目的の型に変換できます。このメソッドは、変換中に発生する可能性のある例外も処理します。
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);
}
}または、ターゲットの型をパラメータとして受け入れるようにコードを変更し、ジェネリックスの必要性を排除することもできます。このアプローチにより、変換プロセスをより詳細に制御できるようになります。
public static bool Is(this string input, Type targetType)
{
try
{
TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
return true;
}
catch
{
return false;
}
}例外ベースのアプローチは型破りに見えるかもしれませんが、一般的な文字列変換を実行するという課題に対する実行可能なソリューションを提供します。
以上がC# で汎用 TryParse メソッドを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。