我正在尝试确定属性的类型,并为其分配SqlDataReader
的值。下面是我的代码和我在这里看到的三个变体,但没有一个工作。 (dr
是DataReader,response.FundsParms
是数据类,DataReader中的字段与数据类的名称相同)
foreach (
PropertyDescriptor prop in
TypeDescriptor.GetProperties(response.FundsParms)
.Cast<PropertyDescriptor>()
.Where(prop => HasColumn(dr, prop.Name)))
{
if (prop.GetType() == string) //Error here is Expression Expected
{
prop.SetValue(response.FundsParms, dr[prop.Name].ToString());
}
if (prop.GetType() == typeof(decimal)) //Pre compile message - Operator is can be used
{
prop.SetValue(response.FundsParms, Convert.ToDecimal(dr[prop.Name]));
}
if (prop is int) //Error: The given expression is never of the given type
{
prop.SetValue(response.FundsParms, Convert.ToInt32(dr[prop.Name]));
}
}
我哪里错了?
答案 0 :(得分:4)
如何使用PropertyType
的TypeDescriptor
属性返回属性Type
的对象:
if ( prop.PropertyType == typeof(int))
答案 1 :(得分:2)
请注意:
foreach (
PropertyDescriptor prop in
变量prop
的类型为PropertyDescriptor
。
if (prop.GetType() == string)
GetType()
返回Type
,代表实例,名为。变量prop
的类型是什么?它是typeof(PropertyDescriptor)
。
PropertyDescriptor.PropertyType
将识别prop
实际描述的属性的类型。