런타임 시 속성 값을 동적으로 읽기
소프트웨어 개발에서는 클래스나 객체와 관련된 속성에 동적으로 액세스해야 하는 상황에 자주 직면합니다. 이 기능은 리플렉션, 구성 검색 및 동적 코드 생성과 같은 다양한 시나리오에 중요합니다.
이 문서에서는 C#에서 동적 특성 검색을 구현하는 방법을 살펴보고 두 가지 방법을 보여줍니다.
1. 특정 속성 유형에 대한 사용자 정의 방법:
DomainName
속성과 같은 특정 속성 유형의 속성 값을 읽으려면 다음과 같은 사용자 정의 메소드를 정의할 수 있습니다.
<code class="language-csharp">public string GetDomainName<T>() { var dnAttribute = typeof(T).GetCustomAttributes( typeof(DomainNameAttribute), true ).FirstOrDefault() as DomainNameAttribute; if (dnAttribute != null) { return dnAttribute.Name; } return null; }</code>
2. 모든 속성 유형에 대한 일반 확장 방법:
속성 검색 프로세스를 일반화하고 모든 속성 유형을 지원하려면 다음과 같은 일반 확장 메서드를 생성할 수 있습니다.
<code class="language-csharp">public static class AttributeExtensions { public static TValue GetAttributeValue<TAttribute, TValue>( this Type type, Func<TAttribute, TValue> valueSelector) where TAttribute : Attribute { var att = type.GetCustomAttributes( typeof(TAttribute), true ).FirstOrDefault() as TAttribute; if (att != null) { return valueSelector(att); } return default(TValue); } }</code>
사용법:
두 방법 모두 다음과 같이 런타임에 DomainName
속성 값을 가져올 수 있습니다.
<code class="language-csharp">// 使用自定义方法 string domainNameValue = GetDomainName<MyClass>(); // 使用扩展方法 string name = typeof(MyClass) .GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>
위 내용은 런타임 시 C#에서 속성 값을 동적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!