問題タブ [expandoobject]

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 投票する
1 に答える
2380 参照

asp.net - WebMethodsにExpandoObjectをシリアル化するにはどうすればよいですか

jqGridにデータを入力するために使用されるこのようなWebMethodがあります

「結果」は、プロパティItems、TotalPages、TotalRecordsを持つSystem.Dynamic.ExpandoObjectです。

Webサービスから戻ってきたjsonは次のようになります

理想的には、jsonを不必要に膨らませ、jqGridでうまく機能しないため、すべてのKeyandValueビジネスなしで戻ってくることを望んでいます。

ASP.NETがExpandoObjectのシリアル化を処理する方法を変更する方法はありますか?

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

c# - 実行時に動的オブジェクトのプロパティとしてリテラル文字列を割り当て、それにアクセスします

実行時にsqldatareaderのフィールド名を動的オブジェクトに動的に割り当てるにはどうすればよいですか?

SqlDataReaderのフィールド名を変数に読み込んだとしましょう。

私は言えない:

どうやってやるの?

アップデート:

まだポイントを取得する時間です;-)メソッドの戻り値であるExpandoObject型のリストにdynオブジェクトを追加します。data [0]を介してリストにアクセスすると、コンパイル時にtestプロパティが存在しません???

リストを返すメソッドの外でこれを行うと、次のようになります。

なぜキャストしなければならないのですか?回避策はありますか?ジョンありがとう。

0 投票する
1 に答える
187 参照

asp.net - System.Dynamic ExpandoControlは可能ですか?

基本的にExpandoObjectであるWebサーバーコントロールを作成する方法を理解しようとしています。

aspxマークアップでプロパティが作成されるときに、コントロールにプロパティを自動的に作成することが望まれます。

例えば:

someProperty属性がコントロールのプロパティとしてまだ存在していない場合。

また、ControlまたはWebControlの機能は厳密には必要ありません。runat = "server"を使用してマークアップで宣言できる必要があります(それ自体がコントロールである必要がある場合がありますが、少なくともそれが私が考えていることです)。

出来ますか?もしそうなら、どうすれば始められますか?

どうもありがとう。

0 投票する
1 に答える
5388 参照

c# - DynamicObject と TrySetMember のパフォーマンスと ExpandoObject のパフォーマンス

いくつかのパフォーマンスの問題が発生しているという事実を除けば、アプリケーションで完全に機能する DynamicObject のカスタム実装を使用しています。ダイナミクスではある程度のパフォーマンス オーバーヘッドが予想されますが、ExpandoObject を使用した場合でも、大幅な (桁違いの) パフォーマンスの低下が見られます。

ExpandoObject を使用できない理由は、その動作の一部をオーバーライドしたいからです。以下の非常に単純な例に問題を要約しました。

私のカスタム ExpandoObject コードは次のとおりです (問題を示すのに十分なコードに簡略化されています) --

DynamicObject のディクショナリに値を直接設定すると (iemdictionary["keyname"] = 500)、ExpandoObject と同様のパフォーマンスが得られます。これは、ディクショナリにキーの値を設定するのにミリ秒未満の時間です。TrySetMember オーバーライド (iemkeyname = 500) を使用すると、キー値セットごとにパフォーマンスが 30 ミリ秒から 50 ミリ秒に低下します。多くのキーに書き込む場合、これは明らかに問題になります。同じキーに何度も書き込んでも、TrySetMember を介してアクセスすると同じ時間がかかります。

私の実際のパフォーマンスの問題は、TrySetMember オーバーライドと同様にダイナミクスを使用しているという事実とは関係がないようです。キックのために、私もコメントアウトしました

TrySetMember メソッドで "return true;" だけを残し、パフォーマンスは同じでした。

次のようなものを SuperExpando クラスに追加すると --

TryGetMember を介して変数にアクセスする (読み取る) パフォーマンスの問題は同じですが、ディクショナリを直接読み取ると妥当なパフォーマンスが得られます。

何か案は?

-BJクイン

編集: ここに完全なサンプル コードがあります。フォームを作成し、go_Click イベントを実行するボタンを配置し、プロジェクトをコンソール アプリケーションに設定するだけです。私の場合、ExpandoObject で 50 個のキーすべてを設定するのに約 30 ミリ秒かかりますが、SuperExpando では最小で約 750 ミリ秒かかります。

0 投票する
1 に答える
3555 参照

c# - ExpandoObjects の動的ビューは、null 値を持つプロパティを「非表示」にします

データベース呼び出しによって入力された ExpandoObjects で動作するコードがいくつかあります。値の一部は常に NULL です。オブジェクトを ExpandoObject として見ると、基になるディクショナリにすべてのキーと値 (null を含む) が表示されます。しかし、動的参照を介してそれらにアクセスしようとすると、対応する null 値を持つキーはオブジェクトの動的ビューに表示されません。動的参照のプロパティ構文を介してアクセスしようとすると、ArgumentNullException が発生します。

ExpandoObject を直接操作したり、一連の try キャッチを追加したり、expando を具象型にマッピングしたりすることで、これを回避できることはわかっていますが、それでは、そもそもこの動的オブジェクトを持つ目的が無効になります。動的オブジェクトを使用するコードは、一部のプロパティに null 値が含まれていても正常に機能します。null 値を持つこれらの動的プロパティを「再表示」する、より洗練された、または簡潔な方法はありますか?

これが私の「問題」を示すコードです

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

expandoobject - リストを並べ替える方法ExpandoObject を含む

ExpandoObjects の辞書を含むリストがあります。これをグリッドにバインドしますが、リストを並べ替えたいと思います。

上記のテスト コードを見て、「ID」、「名前」、または動的に追加するその他のプロパティで行を並べ替える (昇順または降順) 方法を教えてください。

もう少し情報を、私はこのように並べ替えようとしています (これは機能しません)。

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

dynamic - Telerik ASP MVC による動的モデル

ExpandoObject、DynamicObject、または Reflection.Emit を使用してグリッドを動的に作成し、同時に CRUD 操作を許可する方法を見つけた人はいますか?

Reflection.Emit を使用してグリッド列を動的に作成し、データを表示することができましたが、行を編集しようとすると、セルの内容が消えてしまいます。

どんな助けでも大歓迎です!

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

c# - c#動的ExpandoObjectsの名前のピリオド?

これはばかげた質問かもしれませんが、私は次のようなJSONを生成するプロジェクトに取り組んでいます。

C#では、この「action.type」属性を「post」の値で作成しようとしています。どうすればいいですか?これが私が典型的に次のようなものを作成してきた方法です:

目的の「action.type」が出力されないため、「ActionSpec.action.type」に移動できません。これは意味がありますか?ありがとう!

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

c# - 文字列と同じ名前でExpandoObjectにプロパティを追加します

文字列値と同じ名前のプロパティをExpandoObjectに追加する方法はありますか?

たとえば、私が持っている場合:

次のようにプロパティProductNumberを作成できます。

しかし、obj.ProductNumber文字列に基づいてプロパティを作成できますpropNameか?したがって、プロパティの名前が高度にわからない場合は、この入力に基づいてプロパティを作成できます。ExpandoObjectでこれが不可能な場合、C#の他の領域を調べる必要がありますか?

0 投票する
1 に答える
1845 参照

c# - codedomで作成されたLINQクエリで動的オブジェクトを使用する

LINQクエリでexpandoobjectsを使用して、実行時に作成されるプロパティ(csvファイルのヘッダーなど)に対してクエリを実行できるようにしました。例のように、コードにLINQクエリを直接入力すると、すべて正常に機能しました。

次に、コマンドラインからクエリを読み取り、わずかに変更されたバージョンの評価用linqコンパイラを使用して動的LINQクエリを作成しようとしました。

WHEREまたはORDERBYステートメントを使用しない限り、すべて問題ありませんが、WHEREまたはORDER BYがクエリに含まれていると、linqコンパイラでcodedomコードをコンパイルするときにエラーが発生します。CS1963:式ツリーには動的操作が含まれていない可能性があります。

クエリのコードは、次の行を使用して作成されます。

codedomコンパイラは、LINQクエリで直接入力されたものが解析される方法とは異なる方法で式ツリーを構築していると思います。これを機能させるためのアイデアは、実行時に生成されたオブジェクトのクエリを動的に作成するための他のアイデアを含めて、評価されます。