これが典型的なスタックオーバーフローの質問であるかどうかはわかりませんが、常にいくつかの条件を調べる必要があるアプリケーションに取り組んでいます(たとえば、特定の変数の値がしきい値を超えている場合)。条件はいつでも変更でき、できればコードの外部から変更できます。
人々は私が式パーサーを使うべきだと提案しましたが、それでも.NETによって提供される基本的な数学演算に対してそれらが私にどのような利点を提供するのか理解していません。
優れた.NET式パーサーをお勧めしますか?
これが典型的なスタックオーバーフローの質問であるかどうかはわかりませんが、常にいくつかの条件を調べる必要があるアプリケーションに取り組んでいます(たとえば、特定の変数の値がしきい値を超えている場合)。条件はいつでも変更でき、できればコードの外部から変更できます。
人々は私が式パーサーを使うべきだと提案しましたが、それでも.NETによって提供される基本的な数学演算に対してそれらが私にどのような利点を提供するのか理解していません。
優れた.NET式パーサーをお勧めしますか?
DynamicLINQが必要だと思います。条件を文字列として渡すことができます。
これはScottGuによるブログ投稿です:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library。 aspx
私はこれを同様の質問で見つけました:LINQの動的WHERE句
式パーサーを使用すると、柔軟性が向上します。式は、文字列のフォーミュラーとして記述でき、ハードコーディングされたクラス/メソッド/その他のものではなく、アプリケーション データである可能性があります。
次のようなことができます。
// Assign an action to an expression given as a string
ExpressionObserver.Add("(a+b+c)/2 > x-y", () => { DoSomething(); });
または:
// Replace the old expression by something written by the user in the UI
someExpressionActionAssignment.Expression = MyLineEdit1.Text;
しかし、これらすべての追加された複雑さがあなたの場合に本当に効果があるかどうかはわかりません. 単純な式がいくつかしかない場合は、おそらくやり過ぎです。