如何测试数据类型相等的属性

时间:2015-02-26 17:28:41

标签: c#

我正在尝试确定属性的类型,并为其分配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]));
    }
}

我哪里错了?

2 个答案:

答案 0 :(得分:4)

如何使用PropertyTypeTypeDescriptor属性返回属性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实际描述的属性的类型。