質問: .NET 動的オブジェクトのプロパティへのアクセス
.NET 開発者は、動的オブジェクトのプロパティにアクセスする必要がある状況によく遭遇します。 ただし、標準的な反射技術は、動的オブジェクトに対して効果がないことが判明する場合があります。 この質問では、この課題を検討し、.NET 4 フレームワーク内での解決策を模索します。
答え: IDictionary インターフェイスの活用
ExpandoObject
インスタンスの場合は、簡単な解決策が存在します。 ExpandoObject
は IDictionary<string, object>
インターフェースを実装し、キャストによる直接プロパティへのアクセスを可能にします:
<code class="language-csharp">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
ただし、このメソッドは ExpandoObject
にのみ適用可能であり、他の動的オブジェクト タイプには一般化されません。
一般的な動的オブジェクトのアドレス指定
任意の動的オブジェクト (ExpandoObject
を超える) を処理するには、より洗練されたアプローチが必要です。 これらには通常、動的言語ランタイム (DLR) と IDynamicMetaObjectProvider
インターフェイスを利用してプロパティ値を動的に取得することが含まれます。 具体的な実装は、対象となる動的オブジェクトの性質によって異なります。
以上が.NET で動的オブジェクトからプロパティを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。