問題タブ [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 投票する
2 に答える
341 参照

asp.net-mvc - 文字列 GenerateStronglyTypedClass(ExpandoObject object) はどのように見えますか?

多くの場合、MVC ビューを作成するときは、最初にビューを にバインドExpandoObjectして、厳密に型指定されたビューモデルで実際のプロパティを追加/変更/削除するのに時間を費やすことなく、ビューモデルの形状をすばやく把握できるようにします。

しかし、自分のビューモデルがどのように見えるべきかについてかなり良い感触を得たら、実際のクラスを作成することを好みます。ExpandoObject からビューモデルを自動的に生成できれば素晴らしいと思います。それは可能ですか?

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

c# - ServiceStack JsonSerializer を使用して ExpandoObject をシリアル化する方法は?

ServiceStack JsonSerializer を取得して、ExpandoObject を辞書ではなくフラット オブジェクトとしてシリアル化することは可能ですか? おおよそこれに近いもの:

ExpandoObject3 つの異なるシステム (.NET BCL JavaScriptSerializer、Newtonsoft JSON.NET、および ServiceStack の JSON オファリング) を使用して JSON シリアル化を比較しようとしています。

かなり単純な動的オブジェクトから始めます。

シリアライザーが ExpandoObject を として扱う方が簡単に思えIDictionary<string, object>ます。BCL と ServiceStack はどちらもこの方法で開始されますが、結果はかなり異なるルートになります。

一般的なクラスがシリアル化されるように、ExpandoObject をコードで組み立てる際に、さらにシリアル化することをお勧めします。の BCL システムにオーバーライド JavaScript シリアライザーを追加できIDictionary<string, object>ます。これは、実際にそのようにとどまる必要がある を持っていないと仮定すると、うまく機能しIDictionary<string, object>ます(私はまだ持っていません)。

残念ながら、ServiceStack の JsonSerializer が ExpandoObject を同じ方法で処理できるようにする方法がまだ必要です。これを可能にするために ServiceStack システムに接続するにはどうすればよいですか?

更新:私の用途ではオプションではありませんが、ServiceStack は匿名オブジェクトを問題なく処理しているようです。

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

c# - オブジェクトを動的オブジェクトでラップするにはどうすればよいですか?

が与えられた場合System.Object、それが持つ可能性のあるメンバーにアクセスするための動的オブジェクトを取得するにはどうすればよいですか。

具体的には、.NET を返す ASP.NET MVC 3 コントローラー アクションを単体テストしたいと考えていますJsonResultJsonResultには type のプロパティDataがありますobject。このオブジェクトに匿名型を設定しています。

私のテストでは、次のようなことをしたい

これはどのように行われますか?

更新
タイプresult.Dataはですがobject、[ウォッチ] ウィンドウで調べると、次のタイプがあることがわかります。

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

c# - これができない理由: dynamic x = new ExpandoObject { Foo = 12, Bar = "twelve" }

私は何か間違ったことをしていますか、それとも次のコードは本当に不可能ですか?

これが本当に不可能な場合、ExpandoObject を 2 つのプロパティでインスタンス化する別の 1 行の方法はありますか?

C# チームが、通常のオブジェクト、匿名オブジェクト、および列挙型/リストと同じ初期化構文を許可しないことを選択したのはなぜですか?

アップデート

この質問をしたのは、Pearl 愛好家に C# のクールな新しい動的機能を見せようとしたためでしたが、ExpandoObject. Hans Passant の回答のおかげで、それExpandoObjectがこの仕事には不適切なツールだったことに気付きました。私の本当の目標は、C# の動的機能を使用して、メソッドから 2 つの名前付きの値を返すことでした。Hans が指摘するように、dynamicキーワードはこれに最適です。ExpandoObjectこれを行うために、すべてのオーバーヘッドを伴うは必要ありませんでした。

したがって、メソッドから名前付きの値のペアを返したいが、型の安全性、Intellisense、リファクタリング、またはパフォーマンスを気にしない場合、これは非常にうまく機能します。

使用法:

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

c# - dll の境界を越えて匿名/動的型のプロパティにアクセスすると、RuntimeBinderException が発生する

次のサンプルでは、​​x.propertyXは正常に動作しますが、 y.propertyXMicrosoft.CSharp.RuntimeBinder.RuntimeBinderExceptionを返し、 'propertyX' が 'object' で定義されていないと不平を言います。

Program クラスの CreateDynamic メソッド (以下を参照) と Class1 のメソッド (非表示) はまったく同じですが、Class1 は Program とは別のプロジェクトにあります。Class1 を Program のプロジェクトに移動すると、すべて正常に動作します。

匿名型を動的型として dll 全体で機能させるにはどうすればよいですか?それとも不可能ですか?

更新: Fwiw、ExpandoObjects を使用してそれを回避できることがわかりました。これを動的に「キャスト」しますが、ExpandoObjects は、

匿名型が提供するスタイル。

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

c# - ExpandoObjectの辞書で大文字と小文字を区別しないように設定するにはどうすればよいですか?

以下のコードが与えられます

大文字と小文字を区別しないようにする方法はありますか?フィールド名employee_nameを指定します

e.Employee_nameはe.employee_nameと同じように機能します

明白な方法はないようです、おそらくハック?

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

c# - 辞書を変換する方法辞書へColllection.ToDictionary()を使用する

Dapperを使用して、2列の結果セットを辞書にフェッチしています。結果セットにカーソルを合わせると、インテリセンスに.ToDictionary()が表示されることに気付きましたが、dapperは動的プロパティ/ expandoObjectを使用しているため、インテリセンスを機能させることができません。

ありがとうございました

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

c# - ExpandoObject 内のリスト

これを実行すると、モデル内のデータは表示されますが、listOfx は表示されません。

問題: ExpandoObject 内でリスト (または IEnumerable) を取得する方法

ソリューションの更新: ここに画像の説明を入力

ローカル ウィンドウに lifOfx が表示されなかったので、動作していないと思いました。ここで (y を通して) 見ることができます。:-)

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

c# - ScalaでのExpandoObjectの実装

ScalaでC#のExpandoObjectようなクラスを実装しようとしています。これはそれが機能することになっている方法です:

これが私がこれまでに試したことです:

このコードをコンパイルしようとすると、が表示されますStackOverflowError。この仕事を手伝ってください。:) ありがとう。