[創意料理] 用 IL Code 來做一個簡易版本的 FastMember

最近 IL Code 寫得比較多,主要是在練習,目的是希望自己將來遇到效能議題的時候,還有招數可以施展,剛開始練習寫 IL Code 的時候,是先從存取一個 instance 的公開或私有的屬性及欄位開始,這讓我想到一個套件 - FastMember,作者已經至少有 2 年沒有更新了,既然會一點 IL Code,那我能不能弄一套屬於自己的 Chef.FastMember 呢?

...繼續閱讀 »

[料理佳餚] 在執行時期(Runtime)憑空捏造一個型別(Type)

先前的文章有提到過「在執行時期憑空捏造一個組件」這件事,我是用在自己打造的 Library 之中,而做這件事的最主要目的是在執行時期產生一個類別,用來產生使用端類別的替身,或是用來做一些特殊的識別,我們就來看一下,要在執行時期產生一個類別,需要做哪些事情?

...繼續閱讀 »

[料理佳餚] 用 C# 的 System.Reflection.Emit 撰寫 IL Code 將值指派給私有欄位(Private Field)

程式寫多了,我們多多少少會開發一些 Library 來輔助我們讓程式寫起來更方便一些,這些 Library 通常都獨立於專案之外,除了使用上的彈性之外,還有一個我們會關注的大概就是效能了,既然提到了效能,我們腦海中閃過的解決方案應該會有「撰寫 IL Code」這個選項,IL Code 雖然可讀性極差,但是如果我們有能力可以讀得懂,甚至使用 IL Code 撰寫程式的話,對我們在程式執行狀況的掌握,絕對有正向的提昇。

我就用 IL Code 撰寫一段將值指派給私有欄位的程式來當個起頭,之後如果還有遇到 IL Code 可以發揮的地方,我也會儘量整理成文章分享給大家。

...繼續閱讀 »

[料理佳餚] C# 一個 Open Source 的 Compile-time AOP 框架 - AspectInjector

  • 1152
  • 0
  • C#
  • 2021-01-25

看到 Bill 叔在 twMVC#39 講的 Compile-time weaving 的 AOP 框架 - PostSharp,勾起了我的 AOP 魂,隨手 Google 了一下,讓我找到了一個 Open Source 的框架 - AspectInjector(看名字我還以為是某個 Dependency Injection 的套件),看它在 GitHub 的介紹裡面下了 postsharp 的標籤,似乎有向 PostSharp 看齊的目標。

...繼續閱讀 »

[創意料理] 用 Expression 做一個簡易的 Object-Object Mapping

  • 486
  • 0
  • C#
  • 2020-10-05

在 C# 講到 Object-Object Mapping,AutoMapper 絕對是在解決方案清單的前幾名,也是我推薦的首選,不過如果我們只是偶爾在程式的某個小角落,需要把一個類別對應成另一個類別,這時候我們可能不會想要去安裝 AutoMapper、寫 Mapping Configuration,會想說是不是有一個更輕量的方法來解決我們當前的問題?

...繼續閱讀 »