DA0012: Cantidad significativa de reflexiónDA0012: Significant amount of Reflection

Identificador de reglaRule Id DA0012DA0012
CategoríaCategory Uso de .NET Framework.NET Framework Usage
Métodos de generación de perfilesProfiling methods MuestreoSampling
MensajeMessage Quizá está usando reflexión en exceso.You may be using Reflection excessively. Se trata de una operación que utiliza muchos recursos.It is an expensive operation.
Tipo de reglaRule type AdvertenciaWarning

MotivoCause

Las llamadas a métodos System.Reflection, como InvokeMember y GetMember, o a métodos Type, como MemberInvoke, constituyen una proporción considerable de los datos de generación de perfiles.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. Cuando sea posible, considere la posibilidad de reemplazar estos métodos con enlace anticipado a los métodos de ensamblados dependientes.When possible, consider replacing these methods with early binding to the methods of dependent assemblies.

Descripción de la reglaRule description

La reflexión es una herramienta flexible de .NET Framework que puede utilizar para realizar el enlace tardío de la aplicación a un ensamblado de run-time dependiente o para crear y ejecutar dinámicamente nuevos tipos durante el run-time.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. Sin embargo, estas técnicas pueden disminuir el rendimiento si se utilizan con frecuencia o se llaman en bucles de pequeñas dimensiones.However, these techniques can decrease performance if they are used frequently or called in tight loops.

Para obtener más información, consulte la sección Reflexión y enlace tardío de Capítulo 5: Mejorar el rendimiento de código administrado en el volumen Mejorar el rendimiento y la escalabilidad de las aplicaciones .NET de la biblioteca Patrones y prácticas de Microsoft de MSDN.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.

Cómo investigar una advertenciaHow to investigate a warning

Haga doble clic en el mensaje en la ventana Lista de errores para navegar a la vista Detalles de la función de los datos de generación de perfiles.Double-click the message in the Errors List window to navigate to the Function Details View of the profiling data. Examine las funciones de llamada del método System.Type o System.Reflection para encontrar las secciones del programa que hacen un uso más frecuente de las API de reflexión de .NET.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. Evite usar métodos que devuelvan metadatos.Avoid using methods that return metadata. Cuando el rendimiento de su aplicación es crítico, debe evitar el uso de enlace tardío y la creación dinámica de tipos en run-time.When the performance of your application is critical, you might need to avoid using late binding and creating types dynamically at run-time.