집 >백엔드 개발 >C#.Net 튜토리얼 >C#의 리플렉션이란 무엇입니까?
Reflection은 어셈블리, 모듈 및 유형을 캡슐화하는 개체를 제공하는 것을 의미하며, 리플렉션을 통해 유형의 인스턴스를 생성하고 기존 개체에 유형을 바인딩할 수 있으며 어셈블리에서 유형을 확인하고 인스턴스화하고 런타임에 새 유형을 빌드하는 데 자주 사용됩니다.
이 글의 주요 내용은 C#에서 리플렉션이 무엇인지 자세히 소개하는 것입니다. 특정 참고 기능이 있어 모든 분들께 도움이 되길 바랍니다
[추천 과정: C# Tutorial 】
리플렉션이란
리플렉션은 어셈블리, 모듈 및 유형을 캡슐화하는 개체(유형 유형)를 제공하는 것을 의미합니다. 리플렉션을 사용하여 유형의 인스턴스를 동적으로 생성하거나, 기존 객체에 유형을 바인딩하거나, 기존 객체에서 유형을 가져와 해당 메서드를 호출하거나 해당 필드 및 속성에 액세스할 수 있습니다. 코드에서 특성이 사용되는 경우 리플렉션을 사용하여 액세스할 수 있습니다.
반영 시나리오 사용
프로그램 메타데이터에 액세스해야 하는 기능입니다.
어셈블리의 유형을 검사하고 인스턴스화합니다.
런타임에 새로운 유형을 빌드하세요.
System.Reflection.Emit의 클래스를 사용하세요.
런타임에 생성된 유형의 지연 바인딩 및 액세스 방법 수행
리플렉션을 사용하여 유형을 얻는 방법
유형 정보를 얻는 방법에는 두 가지가 있습니다. 하나는 인스턴스 객체를 얻는 것이고, 다른 하나는 Type을 통하는 것입니다. GetType 및 Assembly.GetType 메서드
인스턴스 개체 가져오기
이 메서드에서는 인스턴스 개체만 가져옵니다. 가져오는 방법은 개체 참조일 수도 있고 인터페이스 참조일 수도 있지만 알 수는 없습니다. 정확한 유형에 대해 더 알고 싶다면 System.Object
에 선언된 GetType 메서드를 호출하여 인스턴스 개체의 유형 개체를 얻을 수 있습니다. 전달된 매개변수를 확인해야 합니다. 인터페이스가 구현되었는지 여부, 구현된 경우 인터페이스의 메서드를 호출합니다. System.Object
上声明的方法GetType来获取实例对象的类型对象,比如在某个方法内,我需要判断传递进来的参数是否实现了某个接口,如果实现了,则调用该接口的一个方法:
… public void Process( object processObj ){ Type t = processsObj.GetType(); if( t.GetInterface(“ITest”) !=null ) …}…
Type.GetType以及Assembly.GetType方法
另外一种获取类型的方法是通过Type.GetType以及Assembly.GetType方法,如:
Type t = Type.GetType(“System.String”);
需要注意的是,要查找一个类,必须指定它所在的装配件,或者在已经获得的Assembly实例上面调用GetType。本装配件中类型可以只写类型名称,另一个例外是mscorlib.dll
,这个装配件中声明的类型也可以省略装配件名称(.Net装配件编译的时候,默认都引用了mscorlib.dll,除非在编译的时候明确指定不引用它),比如:
System.String
是在mscorlib.dll
中声明的,上面的Type t = Type.GetType(“System.String”)
是正确的。
System.Data.DataTable
是在System.Data.dll
中声明的,那么Type.GetType(“System.Data.DataTable”)
Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
mscorlib.dll
입니다. 이 어셈블리에 선언된 유형은 어셈블리 이름을 생략할 수도 있습니다(.Net 어셈블리가 컴파일될 때 기본값은 mscorlib.dll은 컴파일 중에 참조하지 않도록 명시적으로 지정하지 않는 한 참조됩니다. 예: 🎜🎜System.String
은 mscorlib.dll
에서 선언됩니다. Type t = Type.GetType("System.String")
이 정확합니다. 🎜🎜System.Data.DataTable
이 System.Data.dll
에 선언된 다음 Type.GetType("System.Data.DataTable")
이 선언됩니다. null 참조만 얻을 수 있습니다. 🎜So🎜rrreee🎜요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들께 도움이 되었으면 좋겠습니다. 🎜위 내용은 C#의 리플렉션이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!