2017-05-03 3 views
0

C#/ ASP.NET MVCで記述され、いくつかの組織で使用されるデータベース駆動型アプリケーションの機能を開発しています。これの一部は、両方の整数である特定のユーザ入力AおよびBにスコアを割り当てるための単純なシステムを含む。SQLデータベースへの挿入とSQLデータベースからの取り出しのためのシンプルなC#関数のシンプル化

各組織には、AとBからスコアを生成する独自の方法があり、タイプFunc<int, int, int>として表すことができます。この関数は、基本演算子を必要とするだけです。たとえば、A * Bまたは(A * 2) + Bです。これは、現在の組織のデータベースに保存され、必要に応じて実行される必要があります。

私はFunc<int, int, int>のインスタンスをシリアル化しようとしましたが、もちろんISerializableを実装していません。どうやって進める?この機能を保存して実行できる代替方法がありますか?これは何らかの種類のカスタム解析コードに頼らなくても可能ですか?

ありがとうございました。

+0

可能であれば、たとえば、ロードするサーバー側またはバイナリアセンブリをコンパイルするためにC#コードを格納することはできません。 (セキュリティ)。難解なロジックを必要としない場合は、単にNCalc(または使いたい小さなパーサを使いやすい)を使用して、式を文字列として格納します。 –

+0

.NETのために利用できる広範囲の表現パーサとコンパイラがあります。あなたはおそらく冷ややかで、おそらくRoslynで一緒にハックします。文字列を格納して実行時にそれらの1つを使用するのが最も簡単なのでしょうか? –

+0

clasicsのファンなら、[Polish notation](https://en.wikipedia.org/wiki/Polish_notation)をご覧ください:) –

答えて

0

結局のところ、単純な式をデータベースに文字列として格納し、実際の評価にはFast Lightweight Expression Evaluatorを使用することにしました。