C# 在非 Web 專案模擬 HttpContext 進行單元測試
開發 Web 專案時常會使用到 HttpContext 物件,例如使用 HttpContext.Current 取得資料,而有時候我們可能會因為單元測試方便、分工或其他因素,將一些功能寫在別的類別庫專案再進行引用。但是非 Web 專案使用到 HttpContext.Current 就會發現他是 Null 而無法使用,所以我們必須自行模擬建立 HttpContext 物件: 首先加入參考,於 [.NET] 的頁籤加入 [System.Web];如果找不到的話,先調整專案屬性,於 [應用程式] => [目標Framework] 選擇非 Client Profile 的版本,例如 .NET Framework 4 接著加入以下程式碼即可 1234567891011121314151617using System.Web;using System.Web.SessionState;using System.Security.Principal;using System.IO;// ...HttpContext.Current = new HttpContext(new Http ...
C# 如何設定 Windows Form 顯示為全螢幕模式
在 C# 中,只要簡單設定 Form 物件的屬性就可以達到全螢幕的效果,可從設計頁或用程式碼方式去設定,而依據使用情境又可使用不同方式來實作,這邊說明兩種情境: 情境一:程式全螢幕阻擋讓程式全螢幕並且永遠在最上層,無法縮小 方法一:設計頁設定屬性於設計頁介面點選 Form 物件設定以下屬性: FormBorderStyle 為 None,去掉外框。 WindowState 為 Maximized,視窗最大化。 TopMost 為 true,最上層。 方法二:使用程式碼設定屬性於 InitializeComponent() 之後加入: 123this.FormBorderStyle = FormBorderStyle.None;this.WindowState = FormWindowState.Maximized;this.TopMost = true; 情境二:程式全螢幕可縮小讓程式全螢幕,當用切換到別的程式時,視窗縮小 屬性設定方法同上,除了 TopMost 不設定 (為 false),另外 Form 還需實作 Deactivate 事件 1234private void F ...
ASP.NET C# Routing(IIS URL Rewrite 替代方案)
使用 apache 時可以方便的使用 mod_rewrite,來做重寫網址的功能,而到了 IIS 則可使用 IIS URL Rewrite Module 來達成,而 .NET 3.5 SP1 之後新增加了 System.Web.Routing 的組件,他可以做到和 IIS URL Rewrite Module 類似的事情,但是在背後運作的機制和使用上有不同之處,在本篇就不多做介紹。 本篇將說明如何使用 Routing 組件來達成 URL 重寫的功能,例如 Blog.aspx?User=emn178 的網址,以 emn178/Blog 的樣式呈現,此篇文章以實作 IRouteHandler 方式處理。 開發模式要在開發時套用此功能,依照以下步驟設定 專案 [加入參考] => [.NET] => [System.Web.Routing] 組件 VS2008 不會自動將模組加入 Web.config,所以需要額外加入以下內容,請找到相對應的位置加入 1234567891011121314151617181920<configuration> ...
C# 以屬性的方式存取陣列元素
本文於 2012/02/09 更新:此需求應為陣列元素唯讀,又能使用索引的方式讀取,故更新此文章。 在網路上有人提出這個問題,想要以屬性 (Property) 的方式存取陣列元素,而我回應了一個解決方案,主要使用了泛型 (Generics) 和索引子 (Indexer) 的方式: 利用泛型先做一個通用的屬性陣列類別 1234567891011121314151617class PropertyArray<T>{ private T[] array; public PropertyArray(T[] array) { this.array = array; } public T this[int index] { get { return array[index]; } }} 在需要此功能的類別中加入上面的類別為屬性成員 12345678910111213 ...