>백엔드 개발 >C++ >C#에서 런타임에 클래스 특성을 어떻게 읽을 수 있나요?

C#에서 런타임에 클래스 특성을 어떻게 읽을 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2025-01-12 08:55:42415검색

How Can I Read Class Attributes at Runtime in C#?

C#에서 클래스 속성에 동적으로 액세스

런타임에 클래스 속성에 액세스하는 것은 메타데이터 또는 구성 정보를 동적으로 검색하는 강력한 기술입니다. 이는 C#의 리플렉션 기능을 사용하여 달성할 수 있습니다.

특정 속성(DomainNameAttribute) 검색:

일반 메서드 GetDomainName<T>는 모든 클래스에서 DomainNameAttribute 검색을 단순화합니다.

<code class="language-csharp">public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true)
                               .FirstOrDefault() as DomainNameAttribute;
    return dnAttribute?.Name;
}</code>

사용 예:

<code class="language-csharp">// Returns "MyTable" (assuming myclass has the attribute)
string domainName = GetDomainName<myclass>();</code>

속성 액세스에 대한 보다 일반적인 접근 방식:

더 넓은 적용성을 위해 보다 일반화된 확장 방법을 사용하면 모든 속성 유형 및 해당 특정 속성을 검색할 수 있습니다.

<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 attribute = type.GetCustomAttributes(typeof(TAttribute), true)
                            .FirstOrDefault() as TAttribute;
        return attribute != null ? valueSelector(attribute) : default(TValue);
    }
}</code>

사용 예:

<code class="language-csharp">string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>

이 메서드는 속성 유형과 람다 표현식을 사용하여 속성 인스턴스에서 원하는 속성 값을 선택합니다. 이는 다양한 속성 속성에 액세스할 수 있는 유연성을 제공합니다.

위 내용은 C#에서 런타임에 클래스 특성을 어떻게 읽을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.