問題タブ [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.
asp.net-mvc - 文字列 GenerateStronglyTypedClass(ExpandoObject object) はどのように見えますか?
多くの場合、MVC ビューを作成するときは、最初にビューを にバインドExpandoObject
して、厳密に型指定されたビューモデルで実際のプロパティを追加/変更/削除するのに時間を費やすことなく、ビューモデルの形状をすばやく把握できるようにします。
しかし、自分のビューモデルがどのように見えるべきかについてかなり良い感触を得たら、実際のクラスを作成することを好みます。ExpandoObject からビューモデルを自動的に生成できれば素晴らしいと思います。それは可能ですか?
c# - ServiceStack JsonSerializer を使用して ExpandoObject をシリアル化する方法は?
ServiceStack JsonSerializer を取得して、ExpandoObject を辞書ではなくフラット オブジェクトとしてシリアル化することは可能ですか? おおよそこれに近いもの:
ExpandoObject
3 つの異なるシステム (.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 は匿名オブジェクトを問題なく処理しているようです。
c# - オブジェクトを動的オブジェクトでラップするにはどうすればよいですか?
が与えられた場合System.Object
、それが持つ可能性のあるメンバーにアクセスするための動的オブジェクトを取得するにはどうすればよいですか。
具体的には、.NET を返す ASP.NET MVC 3 コントローラー アクションを単体テストしたいと考えていますJsonResult
。JsonResult
には type のプロパティData
がありますobject
。このオブジェクトに匿名型を設定しています。
私のテストでは、次のようなことをしたい
これはどのように行われますか?
更新
タイプresult.Data
はですがobject
、[ウォッチ] ウィンドウで調べると、次のタイプがあることがわかります。
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、リファクタリング、またはパフォーマンスを気にしない場合、これは非常にうまく機能します。
使用法:
c# - dll の境界を越えて匿名/動的型のプロパティにアクセスすると、RuntimeBinderException が発生する
次のサンプルでは、x.propertyXは正常に動作しますが、 y.propertyXはMicrosoft.CSharp.RuntimeBinder.RuntimeBinderExceptionを返し、 'propertyX' が 'object' で定義されていないと不平を言います。
Program クラスの CreateDynamic メソッド (以下を参照) と Class1 のメソッド (非表示) はまったく同じですが、Class1 は Program とは別のプロジェクトにあります。Class1 を Program のプロジェクトに移動すると、すべて正常に動作します。
匿名型を動的型として dll 全体で機能させるにはどうすればよいですか?それとも不可能ですか?
更新: Fwiw、ExpandoObjects を使用してそれを回避できることがわかりました。これを動的に「キャスト」しますが、ExpandoObjects は、
匿名型が提供するスタイル。
c# - ExpandoObjectの辞書で大文字と小文字を区別しないように設定するにはどうすればよいですか?
以下のコードが与えられます
大文字と小文字を区別しないようにする方法はありますか?フィールド名employee_nameを指定します
e.Employee_nameはe.employee_nameと同じように機能します
明白な方法はないようです、おそらくハック?
c# - 辞書を変換する方法辞書へColllection.ToDictionary()を使用する
Dapperを使用して、2列の結果セットを辞書にフェッチしています。結果セットにカーソルを合わせると、インテリセンスに.ToDictionary()が表示されることに気付きましたが、dapperは動的プロパティ/ expandoObjectを使用しているため、インテリセンスを機能させることができません。
ありがとうございました
c# - ExpandoObject 内のリスト
これを実行すると、モデル内のデータは表示されますが、listOfx は表示されません。
問題: ExpandoObject 内でリスト (または IEnumerable) を取得する方法
ソリューションの更新:
ローカル ウィンドウに lifOfx が表示されなかったので、動作していないと思いました。ここで (y を通して) 見ることができます。:-)
c# - ScalaでのExpandoObjectの実装
ScalaでC#のExpandoObject
ようなクラスを実装しようとしています。これはそれが機能することになっている方法です:
これが私がこれまでに試したことです:
このコードをコンパイルしようとすると、が表示されますStackOverflowError
。この仕事を手伝ってください。:) ありがとう。