文字列からプロパティ セレクター ラムダを構築できる小さなメソッドを作成しました。これは、Dynamic LINQ が行うことや、スタック オーバーフローに関するその他の 100 万の例のようなものです。
たとえば、 this を指定すると、コンパイルされた場合、 this に似たExpressions.PropertySelector<Type, PropertyType>("Source.Date")
が返されます。Func
(Type) => type.Source.Date
とにかく、プロパティを選択するだけでなく、そのタイプで定義されたメソッドを呼び出す必要がある状況に遭遇しました。
したがって、たとえば、これと同等のものが必要です: (Type) => Type.Source.Date.ToString("Y")
。メソッドを変更してPropertySelector
メソッド呼び出しを検出し、適切な式を作成できることはわかっていますが、もっと良い方法があるかどうか知りたいです。
なぜ私がこれを必要とするのか知りたい人のために: 基本的には、私が構築している Entity Framework でサポートされたリポジトリ用です。呼び出し元がラムダを渡してグループ化するプロパティを表すことができるメソッドがあります。呼び出し元自身が、ユーザー入力に基づいてラムダを構築します。したがって、この方法で行うのが最善の方法であると考えました。
しかし、たとえば、グループ化するプロパティがDateTime
. そして、フォーマットされた文字列でグループ化します。
このようなシナリオを処理するための最良のアプローチは何ですか? 理想的には、式が動的に構築された後、呼び出し元に変更してもらいたいと思います。