問題タブ [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 - 動的ソースを持つ MVC 3 WebGrid
PIVOT 関数によって動的な数の列が作成されたデータの動的リストがあります。多かれ少なかれすべてが機能しますが、いくつかの列にカスタム書式を適用したかったのです。最初の行を取得して次のようにキャストするだけで、列のリストを取得する方法を見つけました。
次に、「列」をループしてリストを作成することにしました。これは、動的フィールド名で「format:」句の動的フィールドを直接参照する限り機能します。たとえば、次のようになります。
「デフォルト」は、各レコードの値を動的に取得しません。「item[c.Key]」とitem.Costに関係していると思います。問題は、主にデータが変更される可能性があるため、事前にわからないため、フィールドごとに異なる大文字と小文字を記述する必要がないことです。常に存在する約 6 つのフィールドがあります。ただし、データ型は知っています。そのため、カスタム形式を適用したかったのです。
編集
私は拡張メソッドを書くことでこれを解決することができました。
xml - XML 動的オブジェクトと IEnumberables
DynamicXML オブジェクトにいくつか問題があります。XML の解析は良好で、単一要素の場合はうまく機能しますが、子要素が複数ある場合は失敗します。明らかに何かが欠けていますが、何がわかりません。
クラスは次のとおりです。
これは私がそれを使用する方法です
これで問題なく動作しますが、xml が次の場合:
次のようなものを使用したいと思います:
しかし、これは起こっていることではなく、エラーが発生するだけです:
助けてくれてありがとう。
c# - 途中でコレクションを作成するC#で2つの同様の動的オブジェクトをマージする
(ほとんどの場合) いくつかの値のみが異なる複数の動的オブジェクトがあります。これらのオブジェクトを 1 つのオブジェクトにマージできるようにしたいのですが、競合 (2 つの値が同じではない) が発生した場合は、これらをコレクションまたは別の動的オブジェクト (可能であれば) に格納したいと考えています。
私は expandoObject クラスを使用しているので、オブジェクトをディクショナリにキャストしてマージしようとしますが、競合のあるコレクションを作成するディクショナリのマージに関する記事やソースは見つかりませんでした。
実装が簡単で効率的な方法でこれを行う方法はありますか?
私が達成しようとしていることの簡単なアイデアを提供するために、いくつかのコード サンプルを投稿します。
c# - 基盤となるディクショナリ構造なしでPowerShellでC#ExpandoObjects(動的)を使用する
大量のフィールド/プロパティで初期化されたC#のExpandoObjectがあり、PowerShell環境でこのオブジェクトを使用したいと考えています。PowerShellでそのようなオブジェクトを取得すると、すべてのフィールド/プロパティが表示されるわけではありませんが、(ExpandoObjectsの基になるディクショナリ構造に基づいて)キーと値のペアとして表示されます。
私の実装の目的では、これは非常に問題があり、このキー/値のペアを、そのようなオブジェクトが動作するようにフィールド/プロパティに変換する手段を見つけることができませんでした。ExpandoObjectをObjectにキャストすることもできません。私は何かが足りないのですか?
カスタムメイドDLL(DataCollect.dll)のマージ関数
以下に、C#dllをロードしてマージ関数を呼び出すために使用するPowerShellスクリプトを示します。
アップデート
C#からPowerShellに正しく変換する方法はまだわかりませんが、HashTablesからPowerShellでオブジェクトを作成する際の小さなトリックを見つけました。重要なのは、Add-Memberコマンドレットを使用することです。このコマンドレットを使用すると、ベースオブジェクト(たとえば、System.Object)の上にオブジェクトを動的に構築できます。
そこで、HashTablesからオブジェクトを再帰的に構築するモジュールを構築しました(プロパティはHashTables(またはExpandoObjects)にもなる可能性があるため、再帰的なメソッドを使用しています)。
これは実際には機能しますが、いくつかの欠点があります。まず第一に、それは私のタイプ情報を保持しません。(コレクションを除く)すべてがint、bool、floatなどではなく文字列になりました。2番目の問題は、おそらく最良で最もクリーンなソリューションではありません。PowerShellユーザーが低レベルの機能を可能な限り抽象化するために、C#DLL内のすべてを処理することを好みます。
このソリューションは機能するかもしれませんが、それでもより良い実装が必要です。
c# - プロパティが C# Expando クラス内に存在するかどうかを確認する
プロパティが C# Expando クラスに存在するかどうかを確認したいと思います。
Python のhasattr関数によく似ています。hasattr の c# イコールが欲しいです。
このようなもの...
c# - ExpandoObject からの MethodInfo
以前ここで ExpandoObjects の Reflection を求められたことは知っています。
私の質問は少し異なります。に似た関数から実行する必要がある静的関数と動的関数がありますobject ExecuteFunction(string name, params object[] parameters)
。
リフレクションを介して静的関数を実行します。問題は、MethodInfo 呼び出しを再利用して、ExpandoObject から MethodInfo オブジェクトを取得できるかどうかです。Action
または、2 つの関数 (1つと 1 つ)を実装する必要がありMethodInfo
ますか?
c# - 辞書のExpandoObjectがnull値です
C#.NET 4.0の動的オブジェクト(ディクショナリ)で満たされたディクショナリがあります。値が文字列、整数、または浮動小数点数である場合もありますが、値がExpandoObjectである場合もあります。ディクショナリ自体は、実際には、そのプロパティを取得するためにディクショナリにキャストされたExpandoObjectです。
問題は、メインオブジェクトの各プロパティ(したがってディクショナリも)を反復処理していて、ICollection / IList型またはExpandoObject型のオブジェクトがある場合に、アクションを実行したいということです。ただし、問題は、ディクショナリに動的オブジェクト(ExpandoObject)がある場合、それがNullとして表示されることです。
Visual Studio 2010でデバッグしていて、動的ビューを開くと、これらのオブジェクトがプロパティとして一覧表示されますが、同じオブジェクトのプロパティをキーと値のペアとして表示すると(ディクショナリビューから表示すると)、値は「このオブジェクトが他のExpandoObjectsを保持している場合はnull」。そして、NullはCollection / EpandoObjectとしてチェックされないため、私の条件は失敗します。
ExpandoObjectsを使用しているときにこのエラーが発生したことはないので、ExpandoObjectsがnull値として表示される理由について非常に興味があります。
欠落しているもの、欠落しているキャスト、または間違ったDataTypeが使用されている可能性がありますか?私はそれを理解することができないようであり、どんな助けも親切に感謝します!
c# - 暗黙のキャストで Interface を返すことができないのに、ExpandoObject では返せるのはなぜですか?
があり、DynamicObject
とまったく同じように IDictionary にキャストできるようにしたいExpandoObject
。たとえば、 ExpandoObject を IDictionary にキャストすることは完全に有効です。
これを自分の DynamicObject に実装してみます。
しかし、コンパイラはそのpublic static implicit operator IDictionary<string, object>
行で失敗し、次のエラーが表示されます:「インターフェイス型との間で変換できません」。暗黙の演算子を Dictionary に変更すると、MyDynamicObject を問題なく Dictionary にキャストできますが、IDictionary にはキャストできません。
ExpandoObject はどのようにこれを行いますか?
c# - ExpandoObject 型のオブジェクトに拡張メソッドを適用する方法は?
これが私のコードです:
しかし、この方法で呼び出すと、「'System.Dynamic.ExpandoObject' には 'Add' の定義が含まれていません」というエラーが表示されました。
修正方法は?
前もって感謝します!
c#-4.0 - ExpandoObject を匿名型に変換する
ExpandoObject
匿名型のオブジェクトに変換することは可能ですか?
現在HtmlHelper
、HTML 属性をパラメーターとして使用できる拡張機能があります。問題は、拡張機能にもいくつかの HTML 属性を追加する必要があるため、ExpandoObject を使用して、ユーザーが htmlAttributes パラメータを使用して関数に渡す属性と属性をマージしたことです。ここで、マージされた HTML 属性を元の HtmlHelper 関数に渡す必要がありますが、ExpandoObject を送信しても何も起こりません。したがって、ExpandoObject を匿名で型指定されたオブジェクトまたは類似のものに変換する必要があると思います。提案は大歓迎です。