-1

検索して近づいてきましたが、次に何をする必要があるのか​​ よくわかりません。したがって、オブジェクトと文字列を受け取る関数があります。

文字列の形式は「property=value」です。そこで、= 記号の文字列を prop と value の 2 つの文字列に分割しました。次に、オブジェクトの同じプロパティを文字列と比較したいと思います。だから私はこのようなものを持っています:

  • 明確化編集: tostring() が機能すると思いますが、私が求めていたのはその逆だと思います。実際のプロパティ値の型は、bool、datetime、int、または string (およびその他の可能性がありますが、カスタム オブジェクトはありません) である可能性があるため、値を正しい型にキャストまたは変換して比較する必要があると考えていました。

  • 2回目の説明。質問した人にとっては、データを評価するための単純なユーザー定義可能なルール システムを作成しようとしているということです。データは人間が入力するので、私の最大の懸念は、他のタイプの文字列表現が実際にそれらのタイプであるかのように比較できないことです。種類。

    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

あなたが何を望んでいるかはわかりませんが、これだと思います。2 つの文字列値の比較

return string.Compare(value, propvalue.ToString()) == 0;
于 2012-11-15T00:58:49.690 に答える
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 に答える