我如何使一个方法的返回types是通用的?

有没有办法使这个方法通用,所以我可以返回一个string,布尔,整数,或双? 现在,它返回一个string,但如果它能find“true”或“false”作为configuration值,我想返回一个布尔例如。

public static string ConfigSetting(string settingName) { return ConfigurationManager.AppSettings[settingName]; } 

3 Solutions collect form web for “我如何使一个方法的返回types是通用的?”

你需要使它成为一个通用的方法,像这样:

 public static T ConfigSetting<T>(string settingName) { return /* code to convert the setting to T... */ } 

但是调用者将不得不指定他们期望的types。 然后,您可以使用Convert.ChangeType ,假设所有相关types都受支持:

 public static T ConfigSetting<T>(string settingName) { object value = ConfigurationManager.AppSettings[settingName]; return (T) Convert.ChangeType(value, typeof(T)); } 

我不完全相信这一切都是一个好主意,

你可以使用Convert.ChangeType()

 public static T ConfigSetting<T>(string settingName) { return (T)Convert.ChangeType(ConfigurationManager.AppSettings[settingName], typeof(T)); } 
  private static T[] prepareArray<T>(T[] arrayToCopy, T value) { Array.Copy(arrayToCopy, 1, arrayToCopy, 0, arrayToCopy.Length - 1); arrayToCopy[arrayToCopy.Length - 1] = value; return (T[])arrayToCopy; } 

我在整个代码中执行这个操作,并想要一种方法将其放入方法中。 我想在这里分享这个,因为我不必使用Convert.ChangeType作为我的返回值。 这可能不是一个好的做法,但它对我有用。 这个方法需要一个通用types的数组和一个值来添加到数组的末尾。 然后将该数组与第一个数据值进行剥离,并将该数值带入该数组的末尾。 最后一件事是我返回通用数组。

  • 有界通配符相关的编译器错误
  • 如何初始化一个List <T>到一个给定的大小(而不是容量)?
  • Java数组和generics:Java相当于C#IEnumerable <T>
  • C#中generics参数的空或默认比较
  • 在C#中将Int转换为通用枚举
  • 在部分特定的类上标记调度和静态方法
  • 为什么C#不支持类构造函数中的genericstypes?
  • 具有多个约束的通用方法
  • 如何使Java通用方法静态?
  • 在genericstypes参数上调用静态方法
  • 为什么不是JComboBox通用的getSelectedItem()?