【发布时间】:2012-03-29 23:15:16
【问题描述】:
假设我有以下课程:
public class MyClass
{
public decimal myDecimal;
public string myString;
}
我想使用DataRowExtensions方法Field<>
目前,我正在使用这样的类:
MyClass myClass = new MyClass();
myClass.myDecimal = row.Field<decimal>("MyDecimalColumnName");
myClass.myString = row.Field<string>("MyStringColumnName");
但是,如果我决定将 myDecimal 的类型更改为 decimal 以外的其他类型,我希望调用 row.Field 以反映正确的数据。
我想要类似于以下语法的东西:
myClass.myDecimal = row.Field<typeof(myClass.myDecimal)>("MyDecimalColumnName");
这不会编译,而且我不知道如何使用typeof 或GetType() 只返回decimal,不管它会被调用。
有没有办法做到这一点,或者类似的东西?我认为这可以在编译时完成,因为类型是已知的,并且因为泛型是编译时构造。
谢谢!
【问题讨论】:
-
看看here
-
编译器不能推断那个类型参数吗?
-
@davisoa 不用于 return 值,否
-
哦,那是限制,我不确定。
-
为什么不只是
row.Field<myClass.myDecimal>("MyDecimalColumnName")?
标签: c# generics datarow typeof gettype