其實這是很奇怪的例外,因爲它發生,只有當我建立以項目爲發佈,並在所有的時候,我選擇調試不會發生。在調試模式下,應用程序完美工作,以下代碼運行良好。Activator.CreateInstance(類型)拋出異常
這裏是我的擴展方法的代碼:
public static T DeepClone<T>(this T source) where T : UIElement
{
T result;
// Get the type
Type type = source.GetType();
// Create an instance
result = Activator.CreateInstance(type) as T; //throws exception here only if I build project as (release)
CopyProperties<T>(source, result, type);
DeepCopyChildren<T>(source, result);
return result;
}
唯一的例外是:
型 'system.missingMethodException而' 的異常出現在 System.Private。 Reflection.Execution.dll但未在用戶處理中 代碼
附加信息:MissingConstructor_Name, Windows.UI.Xaml.Controls.RelativePanel。欲瞭解更多信息,請訪問 http://go.microsoft.com/fwlink/?LinkId=623485
我發現這個異常的一些相關的問題,但他們都指向缺少的庫或更新庫,例如this但在我的應用程序沒有任何改變。
不相關,但當結果可能不是'T'類型時,'T'很有用。功能方面,'x as T'意思是'x是T? (T)x:null',除了'x'只被評估一次。你知道'x是T'必然總是真的,並且在某種程度上你犯了一個錯誤的情況下,得到一個異常立即使得調試比在CopyProperties內的某個'NullReferenceException'更容易調試。因此,我推薦'(T)Activator.CreateInstance(type)'。 – hvd