C#에서 클래스 속성에 동적으로 액세스
런타임에 클래스 속성에 액세스하는 것은 메타데이터 또는 구성 정보를 동적으로 검색하는 강력한 기술입니다. 이는 C#의 리플렉션 기능을 사용하여 달성할 수 있습니다.
특정 속성(DomainNameAttribute) 검색:
일반 메서드 GetDomainName<T>
는 모든 클래스에서 DomainNameAttribute
검색을 단순화합니다.
public string GetDomainName<T>() { var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true) .FirstOrDefault() as DomainNameAttribute; return dnAttribute?.Name; }
사용 예:
// Returns "MyTable" (assuming myclass has the attribute) string domainName = GetDomainName<myclass>();
속성 액세스에 대한 보다 일반적인 접근 방식:
더 넓은 적용성을 위해 보다 일반화된 확장 방법을 사용하면 모든 속성 유형 및 해당 특정 속성을 검색할 수 있습니다.
public static class AttributeExtensions { public static TValue GetAttributeValue<TAttribute, TValue>( this Type type, Func<TAttribute, TValue> valueSelector) where TAttribute : Attribute { var attribute = type.GetCustomAttributes(typeof(TAttribute), true) .FirstOrDefault() as TAttribute; return attribute != null ? valueSelector(attribute) : default(TValue); } }
사용 예:
string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);
이 메서드는 속성 유형과 람다 표현식을 사용하여 속성 인스턴스에서 원하는 속성 값을 선택합니다. 이는 다양한 속성 속성에 액세스할 수 있는 유연성을 제공합니다.
위 내용은 C#에서 런타임에 클래스 특성을 어떻게 읽을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!