C# 無法將類型為“__DynamicallyInvokableAttribute”的對象強制轉換為類型...
阿新 • • 發佈:2019-04-28
!= 遍歷 col all 修改 https 強制 nbsp clas
錯誤代碼:
//遍歷方法特性 foreach (MethodInfo m in type.GetMethods()) { foreach(Attribute a in m.GetCustomAttributes(true)) { DeBugInfo dbi = (DeBugInfo)a; if(null!=dbi) { Console.WriteLine("Bug no: {0}, for Method: {1}",dbi.BugNo,m.Name); Console.WriteLine("Develop: {0}", dbi.Developer); Console.WriteLine("Last Reviewd:{0}", dbi.LastReview); Console.WriteLine("Reamrks: {0}", dbi.Message); } } }
解決:將 (DeBugInfo)a修改為DeBugInfo dbi = a as DeBugInfo;
原因:
前者是一種強制轉換類型,是一種將兩個不同類型的值向上或者向下轉換因此會報錯。
後者,通過object聲明對象,是用了裝箱和取消裝箱的概念,也就是說object可以看成是所有類型的父類,因此object聲明的對象可以轉換成任意類型的值。
參考:https://blog.csdn.net/qq_34926668/article/details/83338771
C# 無法將類型為“__DynamicallyInvokableAttribute”的對象強制轉換為類型...