共用方式為


DA0012:大量的反射

規則 ID

DA0012

分類

.NET Framework 使用

程式碼剖析方法

取樣

訊息

您可能在過度使用反映。 這是非常耗費資源的作業。

規則型別

警告

原因

對 System.Reflection 方法 (例如 InvokeMember 和 GetMember) 或對 Type 方法 (例如 MemberInvoke) 的呼叫佔程式碼剖析資料顯著的比例。 請盡可能考慮用相依組件之方法的早期繫結來取代這些方法。

規則描述

反映是 .NET Framework 的彈性功能,可用來執行應用程式至相依之執行階段組件的晚期繫結,或是在執行階段期間建立新的型別並以動態方式執行這些型別。 不過,如果經常使用這些技巧,或是在緊密迴圈中呼叫它們,就會降低效能。

如需詳細資訊,請參閱 MSDN 上 Microsoft Patterns and Practices 文件庫中「改進 .NET 應用程式效能和延展性」一卷之「第 5 章 - 改進 Managed 程式碼效能」的反映和晚期繫結 (英文) 一節。

如何調查警告

按兩下 [錯誤清單] 視窗中的訊息,即可巡覽至程式碼剖析資料的函式詳細資料檢視。 檢查 System.Type 或 System.Reflection 方法的呼叫函式,以找出最常使用 .NET Reflection API 之程式的區段。 請避免使用傳回中繼資料的方法。 當應用程式的效能極為重要時,您可能需要避免使用晚期繫結,並在執行階段動態地建立型別。