如何将参数传递给泛型方法类型声明

时间:2019-05-21 14:17:24

标签: c# generics parameter-passing

我想将动态类型(在运行时确定)传递给方法泛型类型声明。公开此方法的对象来自第三方,我无法对其进行编辑。

第三方代码公开了两种方法。

obj.Write(string a);

obj.Write<T>(T a); //<-- I want to make <T> determined at runtime

我有一个包含列的数据表,这些列是正确的类型。

理想情况下我想..

obj.Write<dataTable.Columns[0].DataType>( ...

我也尝试过

obj.Write<typeof(dataTable.Rows[0][0])>( ...

但是我怀疑在运行时这不可能吗?

哪个让我解决?

switch (Data.Columns[0].DataType.ToString())
{
    case "System.String":
        obj.Write<string>( ...
        break;
    case "System.Int":
        obj.Write<int>( ...
        break;
    case "System.Float":
        obj.Write<float>( ...
        break;
    etc....
}

有更好的方法吗?

0 个答案:

没有答案