問題タブ [expression-trees]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3305 参照

c# - Linq 式ツリーを介してイベントを特定する

+=イベントが aまたは a の横に表示されない場合、コンパイラは通常チョークする-=ため、これが可能かどうかはわかりません。

式ツリーを使用してイベントを識別できるようにしたいので、テスト用のイベント ウォッチャーを作成できます。構文は次のようになります。

私の質問は 2 つあります。

  1. コンパイラはチョークしますか? もしそうなら、これを防ぐ方法についての提案はありますか?
  2. MyEventToWatchのイベントにアタッチするために、コンストラクターから Expression オブジェクトを解析するにはどうすればよいtargetですか?
0 投票する
19 に答える
20951 参照

c# - 個々の try-catch ブロックなしでコードのすべての行を try-catch します

私は現在この問題を抱えていませんが、あなたは決して知りませんし、思考実験は常に楽しいものです.

これを試みるためにアーキテクチャで発生する明らかな問題を無視して、誰かが設計した恐ろしく書かれたコードがあり、同じコードで多種多様な操作を実行する必要があると仮定しましょう。ブロック、例:

100 倍します。これらのいくつかはうまくいくかもしれませんが、他のものはひどくうまくいかないかもしれません. 必要なのは、"on error resume next" に相当する C# です。そうしないと、多くのコード行で try-catch をコピー アンド ペーストすることになります。

この問題にどのように取り組もうとしますか?

0 投票する
3 に答える
2462 参照

c# - C#式ツリーに関するアドバイス

クラスの型(またはインスタンス)とともに、式ツリーをパラメーターとして受け入れるメソッドに取り組んでいます。

基本的な考え方は、このメソッドが検証に使用されるコレクションに特定のものを追加することです。

このメソッドは次のように呼び出されます。

渡されるプロパティ名を強く型付けしたいので、このようにしています。

私が苦労しているいくつかのこと..

  1. PropertyInfoDoSomething内で、 (渡された本体から)Tの型を取得し、それをrule[]とともにコレクションに追加したいと思います。現在、expression.Bodyを使用し、「Convert。([propertyname])」から[propertyname]を削除し、リフレクションを使用して必要なものを取得することを考えています。これは面倒で間違っているようです。もっと良い方法はありますか?
  2. これは私が使用している特定のパターンですか?
  3. 最後に、私が行っていることについての私の誤解に関する提案や説明があれば幸いです。また、C#式ツリーに関するリソースや優れた情報も高く評価されます。

ありがとう!

イアン

編集:

expression.Body.ToString()DoSomethingメソッド内で返されるものの例は、上記の例から呼び出された場合に「Convert(t.MyProperty)」を含む文字列です。

強く型付けする必要があるので、プロパティ名を変更してもコンパイルされません。

提案をありがとう!

0 投票する
5 に答える
7186 参照

linq - .NET 3.5 式ツリーでの代入

割り当てを式ツリーにエンコードすることは可能ですか?

0 投票する
7 に答える
44144 参照

c# - C# での式ツリーのシリアル化と逆シリアル化

C# で式を逆シリアル化する方法はありますか。式をデータベースに格納し、実行時にロードしたいと考えています。

0 投票する
3 に答える
4101 参照

c# - 汎用オブジェクトと比較する Linq 式ツリーを構築するにはどうすればよいですか?

IQueryable と T 型のオブジェクトがあります。

IQueryable().Where(o => o.GetProperty(fieldName) == objectOfTypeT.GetProperty(fieldName)) を実行したい

それで ...

参考までに、GetProperty は有効な関数ではありません。この機能を実行するものが必要です。

金曜日の午後に脳が溶けてしまっているのでしょうか、それとも複雑なことでしょうか?


objectOfTypeT 次のことができます...

これは完全に機能しますが、今は2番目の部分が必要です:

return SomeIQueryable().Where(o => o.GetProperty(fieldName) == matchValue);

0 投票する
4 に答える
16169 参照

c# - ラムダ式ツリーの解析

プロジェクトでラムダ式を使用してサードパーティのクエリ API にマッピングしようとしています。そのため、式ツリーを手動で解析しています。

次のようなラムダ式を渡すと:

すべてが機能します。

ただし、ラムダ式が次のようになっている場合:

.NET デバッガーを使用しても、その関数の実際の値はわかりません。代わりに、次のようなものが表示されます。

何を与える?式の右側を文字列として取得しようとすると(value(ASP.usercontrols_myaspusercontrol_ascx).myaspdropdown.SelectedValue)、実際の値ではなく取得されます。実際の値を取得するにはどうすればよいですか?

0 投票する
2 に答える
9741 参照

c# - タイプが ExpressionType.MemberAccess の場合、フィールド値を取得するにはどうすればよいですか?

式ツリーを解析しています。NodeType が ExpressionType.MemberAccess の場合、その Field の値を取得するにはどうすればよいですか?

C# MSDN ドキュメントから: MemberAccess は、フィールドまたはプロパティからの読み取りを表すノードです。

コード スニペットは信じられないほど役に立ちます。前もって感謝します!!!

私のコードは次のようになります。

0 投票する
4 に答える
1361 参照

.net - LINQ式ツリーチューリングは完了していますか?

.Net3.5にあるように。DLRが動作する4.0であることがわかっていますが、現在のバージョンに興味があります。

0 投票する
2 に答える
700 参照

c# - 継承中の式の推論

次のコードがあります。

次のコンパイラ エラー メッセージが表示されます。

FigureItOut への呼び出しを次のように変更すると:

その後、動作します。代わりに基本クラスを変更して、最初の例をコンパイルする方法はありますか?

次のように、Base クラス全体をジェネリックにすると、次のようになります。

その後、それは機能しますが、おそらくメソッドレベルで使用できる他のハック(つまり、 FigureItOut を何らかの方法で変更する)ではなく、それを行いたくありません。