언어

Windows 스토어 앱용 .NET Framework의 리플렉션

.NET Framework에는 Windows 8.x 스토어 앱에서 사용할 리플렉션 형식 및 멤버 집합이 포함되어 있습니다. 이러한 형식 및 멤버는 전체 .NET Framework 및 Windows Store 앱용 .NET에서 사용할 수 있습니다. 이 문서에서는 .NET Framework 4 및 이전 버전에서 이러한 항목과 해당 항목 간의 주요 차이점을 설명합니다.

Windows 8.x 스토어 앱을 만드는 경우 Windows 8.x 스토어 앱에 .NET 리플렉션 형식 및 멤버를 사용해야 합니다. 이러한 형식 및 멤버도 데스크톱 앱에서 사용할 수 있지만 필수는 아니므로 두 앱 유형 모두에 대해 동일한 코드를 사용할 수 있습니다.

TypeInfo 및 어셈블리 로딩

Windows 8.x 스토어 앱 TypeInfo 의 .NET 클래스에는 .NET Framework 4 Type 클래스의 일부 기능이 포함되어 있습니다. Type 개체는 형식 정의에 대한 참조를 나타내는 반면TypeInfo, 개체는 형식 정의 자체를 나타냅니다. 이렇게 하면 런타임에서 참조하는 어셈블리를 로드할 필요 없이 개체를 조작 Type 할 수 있습니다. 연결된 TypeInfo 개체를 가져오면 어셈블리가 강제로 로드됩니다.

TypeInfo에는 Type에서 사용할 수 있는 많은 멤버가 포함되어 있으며, Windows 8.x 스토어 앱용 .NET의 많은 리플렉션 속성은 TypeInfo 개체의 컬렉션을 반환합니다. TypeInfo 개체를 Type 개체에서 얻으려면 GetTypeInfo 메서드를 사용합니다.

쿼리 메서드

Windows 8.x 스토어 앱용 .NET에서는 배열을 반환하는 메서드 대신 IEnumerable<T> 컬렉션을 반환하는 리플렉션 속성을 사용해야 합니다. 리플렉션 컨텍스트는 큰 어셈블리 또는 형식에 대해 이러한 컬렉션의 지연 통과를 구현할 수 있습니다.

리플렉션 속성은 상속 트리를 트래버스하는 대신 특정 개체에 대해 선언된 메서드만 반환합니다. 또한, 그들은 필터링에 매개 변수를 사용하지 않습니다 BindingFlags. 대신 반환된 컬렉션에서 LINQ 쿼리를 사용하여 사용자 코드에서 필터링이 이루어집니다. 런타임에서 생성된 리플렉션 객체(예: typeof(Object)의 결과)의 경우 RuntimeReflectionExtensions 클래스의 도우미 메서드를 사용하여 상속 트리를 탐색하는 것이 가장 좋습니다. 사용자 지정된 리플렉션 컨텍스트의 개체 소비자는 이러한 메서드를 사용할 수 없으며 상속 트리 자체를 트래버스해야 합니다.

제한 사항

Windows 8.x 스토어 앱에서는 일부 .NET Framework 형식 및 멤버에 대한 액세스가 제한됩니다. 예를 들어 MethodInfo 개체를 사용하여 Windows 8.x 스토어 앱용 .NET에 포함되지 않은 .NET Framework 메서드는 호출할 수 없습니다. 또한 Windows 8.x 스토어 앱 컨텍스트에서 안전하다고 간주되지 않는 특정 형식과 멤버는 차단되며, Marshal 및 WindowsRuntimeMarshal 멤버도 마찬가지로 차단됩니다. 이 제한은 .NET Framework 형식 및 멤버에만 영향을 줍니다. 평소처럼 코드 또는 타사 코드를 호출할 수 있습니다.

참고하십시오