.NET 4 の動的オブジェクトからプロパティを取得する
.NET 4 で dynamic
キーワードを使用して宣言された動的オブジェクトは、リフレクションを介してプロパティ値を取得しようとすると問題を引き起こす可能性があります。
質問:
動的オブジェクトから属性名とそれに対応する値の辞書を取得するにはどうすればよいですか?
例:
<code class="language-csharp">dynamic s = new ExpandoObject(); s.Path = "/Home"; s.Name = "Home"; // 如何枚举 Path 和 Name 属性并检索它们的值? IDictionary<string, object> propertyValues = ???</code>
答え:
ExpandoObject
オブジェクトの場合、解決策は非常に簡単です。 ExpandoObject
は、そのプロパティの IDictionary<string, object>
インターフェースを実装します。
<code class="language-csharp">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
このメソッドはすべての動的オブジェクトに対して機能しない可能性があることに注意してください。より一般的な動的オブジェクトの場合は、IDynamicMetaObjectProvider
経由で DLR を使用する必要があります。
以上が.NET 4動的オブジェクトからプロパティと値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。