DLR 的擴展庫 Dynamitey

.NET 在 CLR 對動態語言或者腳本語言的支持是通過DLR 完成的, Miguel de Icaza對 DLR 的特點概括如下

  • 一個針對動態語言的共享式類型系統;
  • 一個共享的 AST,可以被語言開發人員用來創建新的動態語言;
  • 針對編譯器開發人員的輔助 / 工具類;
  • 一個通用的宿主接口,從而可以將通用腳本語言的接口嵌入你的程序中,並且允許開發人員用一種貨多種動態語言擴展系統;
  • 控制檯支持,DLR 甚至提供了一個簡單的控制檯接口,用於進行交互式編程。

有了DLR,從c# 4.0開始,反射是不必要的,因爲DLR可以使用運行時類型進行調用。由於動態使用DLR庫很麻煩(而不是C#編譯器爲您生成代碼),因此開源框架Dynamitey(https://github.com/ekonbenefits/dynamitey)使您可以輕鬆地緩存運行時訪問編譯器將生成的相同調用。

Dynamitey 是一個實用程序庫,提供對 DLR 的擴展,包括:

  • 基於DLR的簡單快速反射,它包裝了DLR API,使得通過名稱動態調用方法變得更加簡單,適用於動態和poco對象。 比poco對象的反射更快。

  • 用於使用後期綁定庫中類型的乾淨語法

  • 動態柯里化

  • 元組的操作

Dynamitey 可以像dynamic關鍵字那樣調用它,但是使用字符串作爲屬性名,而不是由編譯器爲您代勞,就是把對一個對象的反射調用轉變成對一個dynamic對象的直接調用:

Dynamic.InvokeGet(d,"value2");

Dynamic.InvokeSet(d, value2, value);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章