プロが教えるわが家の防犯対策術!

以下のメソッドをジェネリックメソッドにしたいのですが、
Double.Parseメソッドの部分をどう変更したらいいのかわかりません。

どなたか方法を教えてください!

//CSVデータをdouble配列に格納する
public static void readCSV(double[] a, string filePath)
{
int i = 0;
char delimiter = ','; //区切り文字はカンマ
string line = "";
using (StreamReader r = new StreamReader(filePath))
{
while ((line = r.ReadLine()) != null) // 1行ずつ読み出し。
{
//分割した結果を文字列の配列で受け取る
string[] splittedResult = line.Split(delimiter);
a[i] = (Double.Parse(splittedResult[0]));
i++;
}
}
}

//ジェネリックバージョン
public static void readCSV<Type>(Type[] a, string filePath)
{
int i = 0;
char delimiter = ','; //区切り文字はカンマ
string line = "";
using (StreamReader r = new StreamReader(filePath))
{
while ((line = r.ReadLine()) != null) // 1行ずつ読み出し。
{
//分割した結果を文字列の配列で受け取る
string[] splittedResult = line.Split(delimiter);
//Double.ParseをTypeを用いてどう記述していいかわからない
a[i] = (Double.Parse(splittedResult[0]));
i++;
}
}
}

A 回答 (1件)

ReflectionでParseメソッドを呼ぶ。



private T Parse<T>(string s)
{
System.Reflection.MethodInfo m
= typeof(T).GetMethod(
"Parse",
System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public,
null,
new Type[]{typeof(string)},
null);
return (T)m.Invoke(null, new object[] { s });
}
    • good
    • 0
この回答へのお礼

ありがとうございます!出来ました!

お礼日時:2013/03/17 14:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!