DA0012. Слишком много вызовов метода Reflection
Идентификатор правила |
DA0012 |
Категория |
Использование .NET Framework |
Методы профилирования |
Выборка |
Сообщение |
Возможно, слишком интенсивно используется отражение.Это является затратной операцией. |
Тип правила |
Предупреждение |
Причина
Вызовы методов System.Reflection, например InvokeMember и GetMember, или методов Type, например MemberInvoke, составляют значительную часть данных профилирования.Рекомендуется по возможности заменить эти методы ранней привязкой к методам зависимых сборок.
Описание правила
Отражение является гибким средством платформы .NET Framework, которое может использоваться для выполнения позднего связывания приложения с зависимой сборкой времени выполнения или для создания и динамического выполнения новых типов во время выполнения.Однако эти приемы могут снизить производительность при частом использовании или при вызове с кратким циклом.
Дополнительные сведения см. в подразделе Отражение и позднее связывание раздела "Глава 5 – Улучшение производительности управляемого кода" в томе "Повышение производительности и масштабируемости приложений .NET" библиотеки шаблонов и практических рекомендаций Майкрософт на веб-сайте MSDN.
Анализ предупреждения
Дважды щелкните сообщение в окне "Список ошибок", чтобы перейти к представлению Представление сведений о функции данных профилирования.Проверьте функции вызова метода System.Type или System.Reflection, чтобы найти секции программы, которые наиболее часто используют API-интерфейсы отражения .NET.Избегайте использования методов, возвращающих метаданные.Если производительность приложения критически важна, возможно, нужно будет избегать позднего связывания и динамического создания типов во время выполнения.