DA0012: 리플렉션 양이 많습니다.DA0012: Significant amount of Reflection

규칙 IDRule Id DA0012DA0012
범주Category .NET Framework 사용.NET Framework Usage
프로파일링 방법Profiling methods 샘플링Sampling
메시지Message 리플렉션을 과도하게 사용하는 것 같습니다.You may be using Reflection excessively. 이 작업은 부담이 큰 작업입니다.It is an expensive operation.
규칙 유형Rule type 경고Warning

원인Cause

InvokeMember, GetMember 등의 System.Reflection 메서드 호출이나 MemberInvoke 등의 Type 메서드 호출이 프로파일링 데이터의 상당한 부분을 차지합니다.Calls to the System.Reflection methods such as InvokeMember and GetMember or to Type methods such as MemberInvoke are a significant proportion of the profiling data. 가능할 경우 이러한 메서드를 종속 어셈블리의 메서드에 대한 초기 바인딩으로 바꿔 보세요.When possible, consider replacing these methods with early binding to the methods of dependent assemblies.

규칙 설명Rule Description

리플렉션은 종속 런타임 어셈블리에 대한 응용 프로그램의 런타임 바인딩을 수행하거나 런타임에 새 형식을 만들고 동적으로 실행하는 데 사용될 수 있는 .NET Framework의 유연한 기능입니다.Reflection is a flexible facility of the .NET Framework that can be used to perform late binding of your application to a dependent run-time Assembly or to create and dynamically execute new types during run-time. 그러나 이러한 기술이 빈번히 사용되거나 타이트 루프에서 호출될 경우 성능이 저하될 수 있습니다.However, these techniques can decrease performance if they are used frequently or called in tight loops.

자세한 내용은 MSDN의 Microsoft Patterns and Practices 라이브러리에 있는 .NET 응용 프로그램 성능 및 확장성 볼륨에서 5장 - 관리되는 코드 성능 향상의 리플렉션 및 런타임 바인딩 섹션을 참조하세요.For more information, see the Reflection and Late Binding section of Chapter 5 — Improving Managed Code Performance in the Improving .NET Application Performance and Scalability volume of the Microsoft Patterns and Practices library on MSDN.

경고를 조사하는 방법How to Investigate a Warning

[오류 목록] 창에서 메시지를 두 번 클릭하여 프로파일링 데이터의 함수 정보 뷰로 이동합니다.Double-click the message in the Errors List window to navigate to the Function Details View of the profiling data. System.Type 또는 System.Reflection 메서드의 호출 함수를 검사하여 .NET Reflection API를 가장 빈번히 사용하는 프로그램의 섹션을 찾습니다.Examine the calling functions of the System.Type or System.Reflection method to find the sections of the program that make the most frequent use of .NET Reflection APIs. 메타데이터를 반환하는 메서드를 사용하지 마세요.Avoid using methods that return metadata. 응용 프로그램 성능이 중요할 경우 런타임 바인딩을 사용하고 런타임에 형식을 동적으로 만드는 방식을 피해야 합니다.When the performance of your application is critical, you might need to avoid using late binding and creating types dynamically at run-time.