将字符串转换为泛型

时间:2012-09-25 05:38:31

标签: c# generics casting

我有这个方法:

public T GetInput<T>()
{
     T result;

     if( (typeof)T == Type.GetType("string"))
     {
           result = GetStringInput(); // returns a string
     }

      // Etc for a bunch of different types
}

我得到的错误是我无法隐式地将字符串转换为“T”。该函数的要点是能够获得任何指定类型的输入,并确保在返回之前对输入进行类型验证。想法?

2 个答案:

答案 0 :(得分:5)

如果您确定它是正确的代码,则不能简单地使用字符串事件在编译时类型 T 上分配未确定的变量。编译器不允许它。要强制执行此操作,您可以执行以下操作:

result = (T)(object)GetStringInput();

这个双重演员会明确地告诉编译器你对这一行负责。

答案 1 :(得分:4)

result = (T)(object)GetStringInput();