我有类似的代码:

 int GetIntValue(string name)
 {
      string valueString=GetValue(name);
      int value=int.Parse(valueString);
      return value;
 }
 double GetDoubleValue(string name)
 {
      string valueString=GetValue(name);
      double value=double.Parse( valueString, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture);
      return value;
 }


以及其他类型的数字类型的类似代码。

我想写这样的东西:

  T getValue<T>(string name)
  {
      string valueString=GetValue(name);
      T value=T.Parse(valueString, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture);
      return value;
  }


但这是行不通的(T太笼统了)。如何更改此代码以在c#中使用泛型?

我正在使用.net 4。

编辑

固定代码以消除错字。

最佳答案

如果Convert.ChangeType实现T,则可以使用IConvertible

T getValue<T>(string name) where T : IConvertible
{
    string valueString=GetValue(string);
    T value = (T)Convert.ChangeType(valueString, typeof(T));
    return value;
}

10-08 13:45