[转载]dynamic的小坑--RuntimeBinderException:“object”未包含“xxx”的定义
生活随笔
收集整理的這篇文章主要介紹了
[转载]dynamic的小坑--RuntimeBinderException:“object”未包含“xxx”的定义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建一個控制臺項目和一個類庫項目, 在類庫中創建一個匿名對象,然后在控制臺中訪問它,代碼如下:
控制臺:
namespace ConsoleApplication1 {class Program{static void Main(string[] args){dynamic dyc = ClassLibrary1.TestClass.Test();Console.WriteLine(dyc.Id);Console.ReadKey();}} }類庫:
namespace ClassLibrary1 {public class TestClass{public static dynamic Test(){return new { Id=1, Name="Test" };}} }編譯沒有問題,但是運行時拋出異常:
“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”類型的未經處理的異常在 System.Core.dll 中發生
其他信息: “object”未包含“Id”的定義
Id屬性是肯定存在的,那問題出在哪呢?
讓我們用ILDasm查看程序,會發現其實聲明的匿名類型是internal級別的。
而internal只能在同一程序集中訪問。在運行時,dynamic想找到在另一個程序集中的internal類型的屬性,自然會報錯。
知道原因,解決起來就很簡單了,只需要在當前程序集的AssemblyInfo.cs中加上
作者:feiyun0112
總結
以上是生活随笔為你收集整理的[转载]dynamic的小坑--RuntimeBinderException:“object”未包含“xxx”的定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache OFBiz的安装
- 下一篇: 几个特别棒的免费可商用字体