我有一个需要具有未知数字类型的变量的类。我需要在运行时从特定的列中获取数据类型,然后将类变量铸造/实例化为该类型,然后在我迭代行时保持该列的运行总计。我考虑过将我的类变量表示为dynamic
,但这并不适合我。我还考虑过使用通用方法,但同样,我觉得有一种更好的方法可以做到这一点。通用财产将很棒,但是,好吧,您知道这个故事是如何结束的。
更新了,这是我一直在使用的代码的剩下的:
dynamic dc = dataRow["MyColumnName"];
var tempValue = Convert.ChangeType(dataRow["MyColumnName"], Type.GetType(dc.GetType().ToString()));
total+= (Decimal)tempValue;
这对我有用
if (dtRow.Table.Columns["Date"].DataType == typeof(System.DateTime))
以下解决方案是检查表中的数据行项目是否包含行项目类型
的基础上的空值 Dim ds as New DataSet = MYData()
Dim rowindex As Integer = 0
For Each row As DataRow In ds.Tables(0).Rows
For index As Integer = 0 To row.ItemArray.Length - 1
If (TypeOf row(index) Is DBNull) And (IsDBNull(row(index))) Then
ds.Tables(0).Rows(rowindex)(index) = 0
End If
Next
rowindex = rowindex + 1
Next
我最终以这样的求解:
public int MyMethod<T>(DataTable myDataTable)
{
dynamic myTempVariable = default(T);
...
}
这不是一个完美的解决方案(我不想在调用该方法之前知道列数据类型),但这为我提供了我想要的灵活性。