0

グラフの最上位ノードを取得できるエンドポイントがあります。また、クライアントが取得したい最上位ノードの子であるノードを指定できるようにします。

例えば:

/libraries/5?with=banner|videos

これにより、バナー オブジェクトと動画のリストを含むライブラリが取得されます。

ネストをサポートする完全なクエリ言語を提供します。たとえば、同じ構造で各ビデオのカバーとチャプターを含めたい場合は、次のようにリクエストします。

/libraries/5?with=banner|videos[cover|chapters]

リクエストが来たら、オブジェクトを動的に構築する必要があります。Clayを見てきましたが、プロジェクトは少し古いようで、ExpandoObject を使用するよりも実行時にオブジェクトを構築するためのより良い方法があると確信しています。

誰かに何かアイデアがあれば、私は最も感謝していますか?

4

2 に答える 2

0

ExpandoObjectオブジェクトに動的プロパティを割り当てる方法です。

Dictionary を使用することもできますが、コードが醜くなる可能性があります。次の例を考えてみましょう -

Dictionary<string, object> parent = new Dictionary<string, object>();
parent["known_prop"] = new List<object>();    
parent["dynamic_prop"] = new Dictionary<string, object>();
parent["dynamic_prop"]["some_value"] = new List<object>();

同じことを ExpandoObject で非常に簡潔に書くことができます -

var a = new ExpandoObject();
a.Prop1 = new List<Object>();
a.Prop2 = new ExpandoObject();
a.Prop2.Val = new List<Object>();
于 2015-03-23T08:14:05.483 に答える
0

C# は、設計上の動的オブジェクト (静的に型付けされた言語) にはあまり適していません。dynamicそれ以外の場合は動的な (コンパイル時には不明な) 構造への静的アクセスをエミュレートする型があります。これを使用して、値の割り当てと取得を行うことができます。

エンドポイントで json または xml を返す Web サービスを理解している場合は、動的オブジェクトを作成する必要はなく、期待される構造を構築するだけです。Newtonsoft json シリアライザー for-instance は、辞書を適切にシリアライズできます。

_dictionary.Add("banner", new Banner())

生産します

{
    "banner" : { ... banner properties ... }
}
于 2015-03-23T08:14:19.323 に答える