c# – 通用类型转换

我试图将对象转换为泛型类型.这是一个示例方法
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),具体取决于调用哪个sproc.

解决方法

Convert.ChangeType返回对象,因此您需要将结果强制转换回T
T result = (T)Convert.ChangeType(someRandomThing,typeof(T))

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么