-1

我已经搜索过并且已经接近了,但我无法完全理解下一步需要做什么。所以我有一个函数,它接受我的对象和一个字符串。

该字符串的格式为“property=value”;所以我将 = 符号处的字符串拆分为 2 个字符串,prop 和 value。现在我想将对象中的相同属性与字符串进行比较。所以我有这样的事情:

  • 澄清编辑:我想 tostring() 会起作用,我想我所追求的是相反的。因为实际的属性值类型可能是 bool、datetime、int 或 string(可能还有其他,但没有自定义对象),所以我想我需要以某种方式将值转换或转换为正确的类型并进行比较。

  • 第 2 次澄清。对于那些询问的人,上下文是我正在尝试创建一个简单的用户可定义规则系统来评估数据。由于数据是我的人类输入的,我最大的担心是其他类型的字符串表示我不会以与它们实际上是那些类型相同的方式进行比较,例如如果它们是十进制类型,则 1.00 应该 = 1.0,但如果它们是字符串则不会类型。

    private static bool evaluateCriteria(string s, Client o){
    
        bool evaluation = false;
    
        string prop = s.Split('=')[0];
        string value = s.Split('=')[1];
    
        var propvalue = (o).GetType().GetProperty(prop).GetValue(o, null);  
    
        //ok so not I want to compare value to propvalue, but don't know how
        // evaluation = (value == propvalue);
    
    
        return evaluation;
    
    }
    
4

3 回答 3

0

将您的反射代码更改为:

var propvalue = (o).GetType().GetProperty(prop).GetValue(o, null).ToString();

如果您要查找的值采用特殊格式,您可能需要对其进行一些格式化以确保它与格式匹配。

您可能还应该在问题中提供更多上下文,因为它对您要实现的目标非常模糊,并且可能有更好的方法来做到这一点。

于 2012-11-15T00:41:57.580 回答
0

您是否关心该属性实际返回的类型?

如果它评估为字符串,你应该能够做一些简单的事情,比如

return value == propvalue.ToString();

也许我错过了一些东西......

于 2012-11-15T00:42:31.460 回答
0

我不确定你想要什么,但我认为是这个。比较两个字符串值

return string.Compare(value, propvalue.ToString()) == 0;
于 2012-11-15T00:58:49.690 回答