C# 操作员'==';无法应用于操作数System.Reflection.PropertyInfo和';int';

C# 操作员'==';无法应用于操作数System.Reflection.PropertyInfo和';int';,c#,reflection,C#,Reflection,这是一段用c语言编写的代码,我被卡住[编辑]: foreach (var property in this.allProperties) { var propertyItself = element.GetType().GetProperty(property.GetType().Name); if (propertyItself.PropertyType != typeof(Int32)) { conti

这是一段用c语言编写的代码,我被卡住[编辑]:

foreach (var property in this.allProperties)
        {
            var propertyItself = element.GetType().GetProperty(property.GetType().Name);

            if (propertyItself.PropertyType != typeof(Int32))
            { continue; }

            if (propertyType == 0)
            { return false; }
        }
如果有人对此置之不理,你能帮我提供一些信息吗?提前谢谢

在像这样计算属性的值之前,需要调用该方法

if (propertyItself == typeof (Int32))
{ 
    if((int) propertyItself.GetValue(element) == 0)
    { 
        return false; 
    }
}

你也可以考虑提高你的表达式的可读性,因为我只评估了一个等于整数的类型。

你需要调用该方法,然后像属性

来评估属性的值。
if (propertyItself == typeof (Int32))
{ 
    if((int) propertyItself.GetValue(element) == 0)
    { 
        return false; 
    }
}

你也可以考虑提高你的表达式的可读性,因为我只评估了一个等于整数的类型。

你需要调用该方法,然后像属性

来评估属性的值。
if (propertyItself == typeof (Int32))
{ 
    if((int) propertyItself.GetValue(element) == 0)
    { 
        return false; 
    }
}

你也可以考虑提高你的表达式的可读性,因为我只评估了一个等于整数的类型。

你需要调用该方法,然后像属性

来评估属性的值。
if (propertyItself == typeof (Int32))
{ 
    if((int) propertyItself.GetValue(element) == 0)
    { 
        return false; 
    }
}


你也可以考虑提高你的表达式的可读性,因为我只评估了一个整数的类型。

在评估属性的值之前,你需要调用<代码> GETValue<代码>。你想用这个代码做什么?为什么<代码>!(x!=y)?
x==y
难道不更容易理解吗?@ByteBlast,这听起来很明显,我没有想到。我再试一次。现在谢谢你!在调用
GetValue
之后,您需要将结果强制转换为
int
,以便获得适当的比较结果……您需要在计算属性值之前调用
GetValue
。您试图用此代码做什么?为什么
!(x!=y)
x==y
难道不更容易理解吗?@ByteBlast,这听起来很明显,我没有想到。我再试一次。现在谢谢你!在调用
GetValue
之后,您需要将结果强制转换为
int
,以便获得适当的比较结果……您需要在计算属性值之前调用
GetValue
。您试图用此代码做什么?为什么
!(x!=y)
x==y
难道不更容易理解吗?@ByteBlast,这听起来很明显,我没有想到。我再试一次。现在谢谢你!在调用
GetValue
之后,您需要将结果强制转换为
int
,以便获得适当的比较结果……您需要在计算属性值之前调用
GetValue
。您试图用此代码做什么?为什么
!(x!=y)
x==y
难道不更容易理解吗?@ByteBlast,这听起来很明显,我没有想到。我再试一次。现在谢谢你!调用
GetValue
后,需要将结果强制转换为
int
,以获得适当的比较结果……我也不确定这一点
var-propertyItself=element.GetType().GetProperty(property.GetType().Name)@ByteBlast,更改后,现在我收到一条消息:“没有方法'GetValue'的重载接受1个'arguments'。这是什么意思?你怎么认为?即使发生了这种情况,我认为这仍然是一个好方法。这意味着它需要的参数比您指定的多。只需要一个参数的
GetValue
重载确实存在,但仅在.NET 4.5.GetValue(元素,null)中存在。。。试试看。我也不确定这一点
var propertyItself=element.GetType().GetProperty(property.GetType().Name)@ByteBlast,更改后,现在我收到一条消息:“没有方法'GetValue'的重载接受1个'arguments'。这是什么意思?你怎么认为?即使发生了这种情况,我认为这仍然是一个好方法。这意味着它需要的参数比您指定的多。只需要一个参数的
GetValue
重载确实存在,但仅在.NET 4.5.GetValue(元素,null)中存在。。。试试看。我也不确定这一点
var propertyItself=element.GetType().GetProperty(property.GetType().Name)@ByteBlast,更改后,现在我收到一条消息:“没有方法'GetValue'的重载接受1个'arguments'。这是什么意思?你怎么认为?即使发生了这种情况,我认为这仍然是一个好方法。这意味着它需要的参数比您指定的多。只需要一个参数的
GetValue
重载确实存在,但仅在.NET 4.5.GetValue(元素,null)中存在。。。试试看。我也不确定这一点
var propertyItself=element.GetType().GetProperty(property.GetType().Name)@ByteBlast,更改后,现在我收到一条消息:“没有方法'GetValue'的重载接受1个'arguments'。这是什么意思?你怎么认为?即使发生了这种情况,我认为这仍然是一个好方法。这意味着它需要的参数比您指定的多。只需要一个参数的
GetValue
重载确实存在,但仅在.NET 4.5.GetValue(元素,null)中存在。。。试试看。