리플렉션을 통해 비공개 C# 필드에 액세스
객체 지향 프로그래밍에서 비공개 필드는 직접적인 외부 액세스로부터 데이터를 보호합니다. 그러나 리플렉션은 필요한 경우 이러한 제한을 우회할 수 있는 메커니즘을 제공합니다.
비공개 _bar 필드 액세스
_bar
클래스 내의 비공개 필드 Foo
에 액세스하는 방법을 살펴보겠습니다. 이 클래스에는 사용자 정의 [SomeAttribute]
로 추가 주석이 추가됩니다. 표준 속성 검색 방법은 공개 속성에서만 작동하므로 _bar
과 같은 비공개 필드는 연결할 수 없습니다.
비공개 회원 잠금 해제
해결책은 리플렉션 중에 특정 바인딩 플래그를 활용하는 것입니다. BindingFlags.NonPublic
은 비공개 회원에게 액세스 권한을 부여하는 반면, BindingFlags.Instance
는 인스턴스 회원에게 검색이 집중되도록 합니다.
코드 예시
다음 코드는 이러한 반영적 접근 방식을 보여줍니다.
<code class="language-csharp">using System.Reflection; class Program { static void Main() { Type myType = typeof(Foo); FieldInfo[] fields = myType.GetFields( BindingFlags.NonPublic | BindingFlags.Instance); } }</code>
여기서 GetFields
는 지정된 바인딩 플래그를 사용하여 공개 및 비공개 인스턴스 필드를 모두 검색합니다.
요약
적절한 바인딩 플래그와 결합된 리플렉션을 사용하면 비공개 필드에 액세스할 수 있습니다. 이 기술은 숨겨진 데이터를 검사하거나 객체 내부를 조작하는 데 매우 귀중한 것으로 입증되어 개발자에게 코드 분석 및 조작을 위한 강력한 도구를 제공합니다.
위 내용은 C#에서 프라이빗 필드에 액세스하기 위해 리플렉션을 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!