こんなかんじはどうだ
いや、スレッドに別解を並べるのもアレなので。
private static Dictionary<Type, Converter<string, Type>> converters = new (); public static T Parse<T>(string text) { Converter<string, Type> c; if (converters.TryGetValue(typeof(T), out c)) return c(text); throw new NotSupportException(); } public static void RegisterParser<T>(Convert<string, T> converter) { converters[typeof(T)] = converter; }
変換処理を外部に持たせることで、後から型を追加するときに必要な実装ポイントがわかりやすくなるのと、NumberStyles のような変換オプションを場合によって変更できたりするほうが便利だろうというかんじで、こういう構造にするかな?
でも、戻り値が具体型でメソッド1つにまとまっているのは使いにくいと感じる人のほうが多いんじゃないかなぁ? 逆の変換で string にしたり、共通の親クラスみたいな汎用型を返すような場合なら作るかもしれないけど、ToInt32(), ToInt64(), ToDouble(), ToSingle()... のほうが良いな〜。