memberInfoCacheCreation MDA
當建立 MemberInfo 快取時,memberInfoCacheCreation Managed 偵錯助理 (MDA) 就會啟動。 這是一種程式的強式提示,會利用耗費昂貴資源的反映 (Reflection) 功能。
症狀
程式的工作集增加,因為程式使用耗費昂貴資源的反映。
原因
與 MemberInfo 物件有關的反映作業會被視為需要昂貴的資源,因為它們必須讀取儲存在頁面中的中繼資料,而且通常會指示此問題使用晚期繫結案例的某個型別。
解決方式
您可以藉由啟用這個 MDA,然後在偵錯工具中執行程式碼,或在啟動 MDA 時附加偵錯工具,藉以判斷反映在程式中使用的地方。 在偵錯工具之下,您將會取得堆疊追蹤,以顯示建立 MemberInfo 快取的地方,並可以從這個地方判斷程式使用反映的地方。
解決方法會取決於程式碼的目的; 這個 MDA 提醒您程式有晚期繫結的情況, 您可能會想要判斷是否可以替代早期繫結的情況,或是考量晚期繫結情況的效能。
對執行階段的影響
每一個建立的 MemberInfo 快取都會啟動這個 MDA; 效能的影響是可以忽略的。
Output
MDA 會輸出一則訊息,表示已經建立 MemberInfo 快取。 請使用偵錯工具來取得堆疊追蹤,以顯示程式正在使用反映。
組態
<mdaConfig>
<assistants>
<memberInfoCacheCreation/>
</assistants>
</mdaConfig>
範例
此範例程式碼將會啟動 memberInfoCacheCreation MDA。
using System;
public class Exe
{
public static void Main()
{
typeof(object).GetMethods();
}
}