>백엔드 개발 >C++ >.NET 리플렉션을 사용하여 유형의 모든 상수를 검색하려면 어떻게 해야 합니까?

.NET 리플렉션을 사용하여 유형의 모든 상수를 검색하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-06 02:36:40884검색

How Can .NET Reflection Be Used to Discover All Constants of a Type?

Reflection을 통한 상수 탐색

객체 지향 프로그래밍 영역에서 특정 유형과 관련된 모든 상수를 검색하는 방법을 이해하는 것은 자기 성찰과 코드 분석을 위한 귀중한 작업입니다. 다행히 .NET 리플렉션은 이 문제에 대한 우아한 솔루션을 제공합니다.

GetFields 메서드를 사용하면 상수를 포함하여 특정 유형 내에 선언된 모든 필드에 액세스할 수 있습니다. 그러나 공개, 정적, 불변성(IsLiteral 및 IsInitOnly 플래그로 표시됨)과 같은 특정 기준을 충족하는 항목을 필터링해야 합니다.

한 가지 접근 방식에는 모든 필드를 반복하고 해당 필드를 선택적으로 추가하는 것이 있습니다. 우리의 조건을 만족시키는 것입니다. 이는 다음과 유사한 코드 조각을 사용하여 달성할 수 있습니다.

private FieldInfo[] GetConstants(System.Type type)
{
    ArrayList constants = new ArrayList();

    FieldInfo[] fieldInfos = type.GetFields(
        BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);

    foreach(FieldInfo fi in fieldInfos)
        if(fi.IsLiteral && !fi.IsInitOnly)
            constants.Add(fi);           

    return (FieldInfo[])constants.ToArray(typeof(FieldInfo));
}

이 솔루션은 유형과 관련된 모든 상수 목록을 얻는 안정적인 방법을 제공하므로 리플렉션 기반 도구 및 코드에 적합합니다. 성찰 시나리오.

위 내용은 .NET 리플렉션을 사용하여 유형의 모든 상수를 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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