c# - 通用类型转换

标签 c# .net 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;
}

这给出了这个错误:

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/

相关文章:

javascript - HTML5 数据属性将 null 和 undefined 转换为字符串

c# - 什么是 C# 中的接口(interface)转换?

c# - 使用 Linq 获取集合的最后 N 个元素?

c# - 阻止 visual studio 2013 在新行上重新定位大括号?

.net - 如何在Visual Studio 2013中删除未使用的功能

c# - .NET 中事件的返回类型是什么?

c++ stringstream到不同类型的变量

c# - 用于对数据进行分组的自动映射器配置

c# - ElasticSearch-过滤类型

c# - 在不更改数字值的情况下将 float 显示为百分比