[小菜一碟] Visual Studio 2019 16.11 版本的一個大亮點 - .NET Hot Reload

今年(2021 年)5 月的時候 .NET Blog 發佈了一篇文章 - Introducing the .NET Hot Reload experience for editing code at runtime,在介紹 Visual Studio 2019 16.11 的新功能 - .NET Hot Reload,當時 Visual Studio 2019 16.11 還在 Preview 1,最近終於正式更新了,我立即將 Visual Studio 2019 更新到 16.11 來體驗一下。

...繼續閱讀 »

[廚餘回收] Visual Studio 2017 的目標 Framework 不見 .NET Standard 2.0

.NET Standard 2.0 算是目前在 .NET 生態系裡面,如果要開發類別庫的話,在新穎跟通用之間取得平衡之下,大家折衷過後比較會選擇的版本,這一天我打開 Visual Studio 2017 要維護以前開發的一個 .NET Standard 2.0 專案,突然發現「目標 Framework」不見 .NET Standard 2.0 的蹤影。

...繼續閱讀 »

[料理佳餚] Windows Forms 三種 Binding 的連動方式:TwoWayBinding、OneWayBinding、OneWayToSourceBinding

日常的工作當中,還是難免遇到需要維護 Windows Forms 的程式,基本上 Windows Forms 控制項的互動能夠用 Binding 的方式去處理,我就儘量用 Binding 的方式去處理,讓我自己能夠有更多的精神放在商業邏輯上,這篇文章想跟大家分享 Windows Forms 的三種 Binding 的連動方式。

...繼續閱讀 »

[小菜一碟] 無意中發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能

如果我們接手維護一個資料庫,裡面的 Table、View、Stored Procedure、Function、Trigger 相依鏈錯綜複雜,想要定位發生問題的區塊,搞得像盜墓一樣,這天我無意間發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能,有助我們來釐清資料庫物件的相依鏈。

...繼續閱讀 »

[創意料理] 用 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 可以發揮的地方,我也會儘量整理成文章分享給大家。

...繼續閱讀 »

[小菜一碟] Windows Forms 的 DataGridViewComboBoxColumn 選項變更後立即更新到 DataSource

Windows Forms 的 DataGridView 開啟編輯資料之後,我們就可以在畫面上直接對資料進行修改,預設的統一操作行為是修改完資料之後,按下 Enter 鍵或是離開該儲存格,資料就會更新到綁定的 DataSource 上,就像下面這樣:

但是呢,使用者會希望能在修改之後立即更新到 DataSource,不要再多敲 Enter 鍵或離開儲存格的動作,尤其是 ComboBox,我們來看一下怎麼弄?

...繼續閱讀 »