通用类型转换

Vac*_*ano 6 .net c# casting

我试图将对象转换为泛型类型.这是一个示例方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

这给出了这个错误:

无法将类型'object'隐式转换为'T'.存在显式转换(您是否错过了演员?)

我已经尝试了几种变体来将我的结果转换为泛型类型,但每次都没有成功.

有没有办法让这个演员表演?

注意:在我的实例中,我从存储过程中获取"对象".该方法可以调用多个存储过程之一,因此结果可以是字符串或int(或long),具体取决于调用哪个sproc.

Tre*_*ley 12

Convert.ChangeType 返回对象,因此您需要将结果强制转换为 T

T result = (T)Convert.ChangeType(someRandomThing, typeof(T))
Run Code Online (Sandbox Code Playgroud)