ProgramingTip

Reflection을 사용하여 내부 클래스에 액세스하는 방법

bestdevel 2020. 11. 24. 18:51
반응형

Reflection을 사용하여 내부 클래스에 액세스하는 방법


어셈블리의 내부 클래스에 액세스하려면 어떻게해야합니까? System.ComponentModel.Design.DesignerHost에 액세스하고 싶습니다. 여기서 DesignerHost는 내부 및 봉인 된 클래스입니다.

어셈블리 및 형식을로드하는 코드를 어떻게 수행합니까?


으로 이렇게하면 일반적 안됩니다 . 유형이 내부로 내부로 어셈블리 외부에서 사용하지 않습니다. 이후 버전에서 제거, 변경 등을 할 수 있습니다.

그러나 반사 하지 테이크 오버로드를 단지 봐-공공없는 액세스 유형 및 회원들에게 허용 BindingFlags인수를, 그리고 등 BindingFlags.NonPublic이 통과하는 플래그에.

당신이있는 경우 정규화 (어셈블리 정보 포함) 유형의 이름을 한 후 바로 호출 작동합니다. 어셈블리를 미리 알고 있는 경우 어셈블리 내의 공용 형식을 알고 있는 어셈블리 참조를 가져 오는 데 사용 하는 것이 일반적으로 더 간단하며 .Type.GetType(string)typeof(TheOtherType).AssemblyAssembly.GetType(string)


어셈블리를로드하고 예제에서 인용 한 유형을 입력 한 다음 :

Assembly design = Assembly.LoadFile(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll");
Type designHost = design.GetType("System.ComponentModel.Design.DesignerHost");

참고 URL : https://stackoverflow.com/questions/1259222/how-to-access-internal-class-using-reflection

반응형