"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 런타임에 클래스에서 속성 값을 동적으로 검색하려면 어떻게해야합니까?

런타임에 클래스에서 속성 값을 동적으로 검색하려면 어떻게해야합니까?

2025-02-07에 게시되었습니다
검색:231

How Can I Dynamically Retrieve Attribute Values from a Class at Runtime?

런타임 검색 속성

이 기사는 클래스의 속성 값에 동적으로 액세스하고 추출하는 일반적인 방법을 소개합니다.

특별한 방법

유형 매개 변수를 허용하는 일반적인 메소드를 정의합니다.

public string GetDomainName()
]

메소드 내부 :

  • 사용 typeof (t) .getCustomAttributes 사용 사용자 정의 속성을 검색합니다.

      var dnAttribute = typeof(T).GetCustomAttributes(
        typeof(DomainNameAttribute), true
      ).FirstOrDefault() as DomainNameAttribute;
  • 속성이 존재하면 그 값이 반환됩니다 :

      if (dnAttribute != null)
      {
        return dnAttribute.Name;
      }
  • 그렇지 않으면 return null :

      return null;
    ]]]]

유틸리티 확장 방법

더 넓은 적용 가능성을 위해이 방법을 일반화하여 속성을 처리합니다.

public static class AttributeExtensions
{
    public static TValue GetAttributeValue(
        this Type type, 
        Func valueSelector) 
        where TAttribute : Attribute
}

확장 방법 내부 :

  • 사용자 정의 속성 검색 :

      var att = type.GetCustomAttributes(
        typeof(TAttribute), true
      ).FirstOrDefault() as TAttribute;
  • 속성이 존재하는 경우 제공된 valueSelector 를 사용하여 필요한 값을 추출하십시오 :

    ]
      if (att != null)
      {
        return valueSelector(att);
      }
  • 그렇지 않으면이 유형의 기본값을 반환합니다.

      return default(TValue);
    ]

사용 예

  • domainName 속성 myclass :
  • 의 속성을 검색합니다.
string name = typeof(MyClass).GetDomainName();
의 속성 값을 검색합니다.
  • 문자열 이름 = typeof (myclass) .getAttributeValue ((DomainNameAttribute DNA) => DNA.Name);
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3