私は適切なParse
方法を検索し、それを呼び出すためにリフレクションを使用する一般的な方法を書きました。しかし、string
をstring
に変換する場合は、string
にはParse
メソッドがないので、それらは機能しません。したがって、string
の特殊ケースを追加する必要があります。
なぜあなたの機能がGetDefaultValue
と呼ばれているのかわかりません。どうしてですか?Parse
、TryParse
、ConvertFromString
などですか? GetDefaultValue
という関数を見ると、私は解析関数を考えません。
この古い質問を確認してください: Is it possible to make a generic number parser in C#?これにはいくつかの関連する回答があります。
private static class ParseDelegateStore<T>
{
public static ParseDelegate<T> Parse;
public static TryParseDelegate<T> TryParse;
}
private delegate T ParseDelegate<T>(string s);
private delegate bool TryParseDelegate<T>(string s, out T result);
public static T Parse<T>(string s)
{
ParseDelegate<T> parse = ParseDelegateStore<T>.Parse;
if (parse == null)
{
parse = (ParseDelegate<T>)Delegate.CreateDelegate(typeof(ParseDelegate<T>), typeof(T), "Parse", true);
ParseDelegateStore<T>.Parse = parse;
}
return parse(s);
}
public static bool TryParse<T>(string s, out T result)
{
TryParseDelegate<T> tryParse = ParseDelegateStore<T>.TryParse;
if (tryParse == null)
{
tryParse = (TryParseDelegate<T>)Delegate.CreateDelegate(typeof(TryParseDelegate<T>), typeof(T), "TryParse", true);
ParseDelegateStore<T>.TryParse = tryParse;
}
return tryParse(s, out result);
}
https://github.com/CodesInChaos/ChaosUtil/blob/master/Chaos.Util/Conversion.cs:私はタイプのParse
/TryParse
方法を見つけて、汎用的な機能から、これらにアクセスするためにリフレクションを使用していくつかのコードを書かれている
:
そして、そこから私の古い答え
しかし、私はあまりにもそれらをテストしていないので、彼らはいくつかのバグを持っているかもしれない/電子で正しく動作しません非常にタイプ。エラー処理には少し欠けています。
そして、それらは、文化不変の解析のための過負荷がありません。おそらくそれを追加する必要があります。
これをお読みください:http://tinyurl.com/so-hints – Oded
http://stackoverflow.com/questions/6160329/is-it-possible-to-make-a-generic-number-parser-in -c同様の質問です。しかし、私はそれが正確な重複としてカウントされているかどうかは分かりません。 – CodesInChaos