我试图将对象转换为泛型类型.这是一个示例方法:
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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。