1

私は次のようなテーブルを持っています:

RuleStep

StepID | Step Property | Step Condition Id | Step Value | Logical Operator | Next Step Id

行の1つは次のようになります:100、Name、200(等しいことを意味します)、AnyName、210(Andを意味します)、300(次のステップIDを指します)。

上記は、NameがAnyNameと等しくなければならないというステップがあり、次のステップが演算子ANDによってチェーンされているルールを評価する必要があることを意味します。次のステップは言うことができます-年齢は10に等しいはずです。

これらのルールは、AgeとNameの2つのプロパティを持つオブジェクトPersonに対して評価する必要があります。personnameがAnyNameであり、Ageが10であるかどうかを確認する必要があります。

どうすればいいのか教えていただけますか?これをサポートできるライブラリはありますか?私を助けることができるC#内の特定の機能はありますか?

ありがとう、-マイク

4

3 に答える 3

1

私を助けることができるC#内の特定の機能はありますか?

はいあります。テーブル内のデータからLINQ式ツリーを構築し、それを動的に関数オブジェクトにコンパイルして、ターゲットオブジェクトに対して結果のラムダを実行できます。ライブラリは慣れるのに少し時間がかかりますが、非常に強力で非常に高速な構成であるため、それを学ぶために時間を費やすことの見返りは本当に莫大です。

于 2012-06-12T06:52:36.897 に答える
0

NuGetから入手できるLinqKitパッケージからPredicateBuilderを試すことができます。

于 2012-06-12T06:53:17.507 に答える
0

リフレクションを使用した簡単で汚い例:

bool CheckEqualityRule (object target, string propertyName, string testValue)
{
    var property = target.GetType().GetProperty(propertyName);
    var value = (string)property.GetValue(target, null);
    return value == testValue;
}
于 2012-06-12T06:54:56.923 に答える