1. 程式人生 > >C# 無法將類型為“__DynamicallyInvokableAttribute”的對象強制轉換為類型...

C# 無法將類型為“__DynamicallyInvokableAttribute”的對象強制轉換為類型...

!= 遍歷 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”的對象強制轉換為類型...