DA0012: 리플렉션 양이 많습니다.
규칙 ID |
DA0012 |
범주 |
.NET Framework 사용 |
프로파일링 방법 |
샘플링 |
메시지 |
리플렉션을 과도하게 사용하고 있습니다. 리소스가 많이 소모되는 작업입니다. |
규칙 유형 |
경고 |
원인
InvokeMember 및 GetMember 등의 System.Reflection 메서드에 대한 호출이나 MemberInvoke 등의 Type 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 가능한 경우 이러한 메서드를 종속 어셈블리의 메서드에 대한 초기 바인딩으로 바꾸는 것이 좋습니다.
규칙 설명
리플렉션은 응용 프로그램을 종속된 런타임 어셈블리에 뒤늦게 바인딩하거나 런타임 중에 새 형식을 만들어 동적으로 실행하는 데 사용하는 .NET Framework의 유연한 기능입니다. 그러나 이 기술은 자주 사용하거나 반복되는 루프에서 호출하면 성능을 저하시킬 수 있습니다.
자세한 내용은 MSDN Microsoft Patterns and Practices 라이브러리의 Improving .NET Application Performance and Scalability 볼륨에서 Chapter 5 — Improving Managed Code Performance의 Reflection and Late Binding 단원을 참조하십시오.
경고를 조사하는 방법
오류 목록 창에서 메시지를 두 번 클릭하여 프로파일링 데이터의 함수 정보 뷰로 이동합니다. System.Type 또는 System.Reflection 메서드의 호출 함수를 검토하여 .NET 리플렉션 API를 자주 사용하는 프로그램의 부분을 찾습니다. 메타데이터를 반환하는 메서드를 사용하지 마십시오. 응용 프로그램의 성능이 중요한 경우 런타임에 바인딩을 사용하고 런타임에 동적으로 형식을 만드는 상황을 피해야 할 수도 있습니다.