DA0012:大量反射

规则 ID

DA0012

类别

.NET Framework 使用

分析方法

采样

消息

您可能正在过度使用反射。 这是代价高昂的操作。

规则类型

警告

原因

对 System.Reflection 方法(如 InvokeMember 和 GetMember)或 Type 方法(如 MemberInvoke)的调用在分析数据中占很大比例。 如果可能,请考虑用对依赖程序集的方法的早期绑定替代这些方法。

规则说明

反射是 .NET Framework 的一种灵活功能,可用于对依赖运行时程序集执行应用程序的后期绑定,也可用于在运行时创建和动态执行新类型。 但是,如果在紧凑循环中频繁使用和调用这些技术,可能会降低性能。

有关更多信息,请参见 MSDN 上 Microsoft 模式和做法库的第 5 章 — 在提高 .NET 应用程序性能和可伸缩性中提高托管代码性能卷的 Reflection and Late Binding(反射和后期绑定)节。

如何调查警告

双击“错误列表”窗口中的该消息以导航到分析数据的函数详细信息视图。 检查 System.Type 或 System.Reflection 方法的调用函数来查找最频繁使用 .NET 反射 APIs 的程序节。 避免使用返回元数据的方法。 当性能对于您的应用程序至关重要时,您可能需要避免使用后期绑定以及在运行时动态创建类型。