将字符串转换为泛型

ARW*_*ARW 2 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
}
Run Code Online (Sandbox Code Playgroud)

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

Raf*_*fal 5

如果您确定它是正确的代码,则不能简单地使用字符串事件在编译时类型T上分配未确定的变量.编译器不允许它.要强制这样做,你可以这样做:

result = (T)(object)GetStringInput();
Run Code Online (Sandbox Code Playgroud)

这个双重演员将明确告诉编译器你负责这一行.