사전을 사용하여 동적 개체의 속성에 효율적으로 액세스
배경:
.NET 4에서 dynamic
키워드를 사용하여 동적 개체를 생성할 때 속성과 해당 값의 사전을 얻는 것이 어려울 수 있습니다. 전통적인 반영 방법으로는 충분하지 않을 수 있습니다.
동적 객체의 속성:
ExpandoObject
과 같은 .NET의 동적 개체는 런타임에 동적으로 속성을 생성합니다. 컴파일러는 이러한 속성을 미리 알지 못하므로 표준 기술을 사용하여 속성에 액세스하기가 어렵습니다.
ExpandoObject 솔루션:
다행히 ExpandoObject
에게는 간단한 해결책이 있습니다. ExpandoObject
은 IDictionary<string, object>
인터페이스를 구현하므로 동적 객체를 이 유형으로 직접 캐스팅하고 사전 형식으로 해당 속성에 액세스할 수 있습니다.
<code class="language-C#">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
범용 동적 개체:
그러나 이 접근 방식은 IDictionary<string, object>
에서 상속되지 않는 일반 동적 개체에는 작동하지 않습니다. 이 경우 DLR(Dynamic Language Runtime)을 활용해야 합니다. 여기에는 IDynamicMetaObjectProvider
인터페이스 사용이 포함됩니다.
<code class="language-C#">var metaObject = (IDynamicMetaObjectProvider)s; var properties = metaObject.GetMetaObject(Expression.Constant(s)).GetDynamicMemberNames();</code>
이 방법은 더 복잡한 DLR 작업을 포함하며 ExpandoObject
동적 개체가 아닌 경우 고려해야 합니다.
위 내용은 .NET에서 동적 개체의 속성에 효율적으로 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!