我正在尝试将一个对象转换为泛型类型。下面是一个示例方法:
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;
}
这导致出现以下错误:
无法隐式转换类型“object”为“T”。存在显式转换(是否漏掉了一个强制类型转换?)
我已经尝试了几种方法,将我的结果转换为一般类型,但每次都没有成功。
有办法进行转换吗?
注意:在我的实际示例中,我从存储过程中获取了一个“object”。该方法可以调用多个存储过程,因此根据调用的sproc,结果可以是字符串或int(或long)。
GetNewWidgetId()
,它调用受保护的方法。 - Vaccano