【问题标题】:Convert string to generic type c# (Convert string to T) [closed]将字符串转换为泛型 c#(将字符串转换为 T)[关闭]
【发布时间】:2014-03-15 11:43:46
【问题描述】:

我有一个方法需要将字符串转换为泛型:

T GetValue<T>(string name)
{
   string item = getstuff(name);
   return item converted to T   // ????????
}

T 可以是整数或日期。

【问题讨论】:

  • 如果T 可以是only intDateTime,请不要使用泛型。如果T 也可以是其他类型,请参阅Serialization
  • return (T)Convert.ChangeType(item, typeof(T));
  • 查看Convert.ChangeType(obj, type) 方法是否适合您的需求。
  • 我必须同意这是对泛型方法的错误使用。您应该简单地为 int 和 DateTime 编写一个单独的方法。你可以让它工作,但这并不意味着你应该这样做。

标签: c# generics type-conversion


【解决方案1】:

你可以使用Convert.ChangeType

T GetValue<T>(string name)
{
   string item = getstuff(name);
   return (T)Convert.ChangeType(item, typeof(T));
}

如果您只需要限制 int 和 DateTime 的输入类型,请添加如下条件

if (typeof(T) != typeof(int) && typeof(T) != typeof(DateTime))
{
     // do something with other types 
}

【讨论】:

  • 它可以完美地将字符串转换为日期或整数,具体取决于 T 是什么。谢谢
  • 坏主意。是什么阻止了 T 成为其他类型?该代码可能出错的地方太多了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
相关资源
最近更新 更多