文章出處

    時隔一年多以后Castle 項目又開始活躍,最近剛發布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releases主要包括的內容是DynamicProxy 和 DictionaryAdapter,日志集成工作正在開發中,這個版本主要針對的是.NET Core版本的更新。

    Castle.DynamicProxy可以實現動態代理的功能,這個也是很多框架的基礎。也就是說它是眾多開源項目向.NET Core兼容的重要基礎組件。在IBatis.Net中就是使用了Castle.DynamicProxy來實現數據庫連接等動態操作的。同時在NHibernet等其他框架中也使用到了這個技術。特點是實體不需要繼承MarshalByRef、ContextBoundObject便可以實現代理類。基于透明代理的功能,可以實現對方法調用的攔截處理,例如NHibernate用它實現延遲加載DP的使用非常簡單,內部沒有使用反射,而是采用Emit、委托等方式生成代理類型,調用真實類的方法,性能方面也沒有太多損失。而且更重要的是將在.NET Core中被廢止的技術 已經提到反射在.NET Core中已經產生了很大的變化,相信以后Castle.DynamicProxy會有更大的用處。基本使用可參照 AOP之Castle DynamicProxy 動態代理

    Castle DictionaryAdapter 也是一個很有用的工具,動態生成 IDictionary (包括泛型) 類型的強類型包裝。不只如此,但它也有一些其他功能,如支持 INotifyPropertyChanged,可編輯性、 錯誤處理等...,

有很多非類型化的字典中使用,例如Session, Form, QueryString, Context.Items和 MonoRail's PropertyBag ,也可以用來包裝 app.settings/web.settings。推薦看下這兩篇文章,DictionaryAdapter is Love (Part 1)、 DictionaryAdapter is Love (Part 2)


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()