我正在尝试将对象转换为通用类型。这是一个示例方法:
void Main()
{
object something = 4;
Console.WriteLine(SomeMethod<int>(something));
Console.WriteLine(SomeMethod<string>(something));
}
public T SomeMethod<T>(object someRandomThing)
{
T result = Convert.ChangeType(someRandomThing, typeof(T));
return result;
}
这给出了这个错误:
Cannot implicitly convert type 'object' to 'T'. An explicit conversion exists (are you missing a cast?)
我已经尝试了几种变体来将我的结果转换为泛型类型,但并不是每次都能奏效。
有没有办法进行这种转换?
注意:在我的真实示例中,我从存储过程中获取了一个“对象”。该方法可以调用多个存储过程之一,因此结果可以是字符串或 int(或 long),具体取决于调用的存储过程。
最佳答案
Convert.ChangeType
返回对象,因此您需要将结果转换回 T
T result = (T)Convert.ChangeType(someRandomThing, typeof(T))
关于c# - 通用类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22720443/