UTF8Encoding與BOM

  • 15664
  • 0
  • .Net
  • 2011-01-30

前陣子團隊中有用XmlSerializer將物件轉成XML存檔後,上傳給另一家公司,對方卻一直回報我們XML有問題,用文字編輯器看格式都很正確,但用XML的編輯器卻會出錯,發現原來是BOM害的。

...繼續閱讀 »

IoC的中繼器:CommonServiceLocator

IoC(控制反轉)是時下很流行的設計模式,它可以大大的簡少程式之間的相依性,有點像工廠模式,在Class中操作的都是Interface,而Interface與Class的對應與建立實例都是由IoC Framework處理,光是在.Net Framework下的IoC Framework就有近10套,每套都有各自的優缺點,呼叫方式也略有不同,切換IoC Framework是非常麻煩的,或是開發組件(Assembly),組件也是使用IoC,但是又不能限制使用端用特定款IoC Framework,這時候可以考慮使用IoC的中繼器:CommonServiceLocator來解決這個問題。

...繼續閱讀 »

Moles使用x86版本編譯

有時專案載入了有x86版與x64版的組件,因為萬惡的Visual Studio 2010是x86版,所以在開發時必需使用x86版本的組件,但是Moles預設是使用x64的執行檔,所以二著相衝,編譯就失敗了,不過還好可以在MSBuild中設定來解決問題。

...繼續閱讀 »

中英數文字混雜的截字或補空白方法[Big5版]

  • 12324
  • 0
  • .Net
  • 2010-12-03

在與很多系統做資料交換,有些交換檔是以Big5編碼的固定Bytes的定寬格式,因為在.NET中任何文字包含中英數字或符號都是一個Char,但Big5編碼英文是1Byte、中文是2Byte,所以不能以文字的長度來截字或補空白,小弟我想到的是轉成Bytes來處理。

...繼續閱讀 »

Moles - Isolation framework for .NET(假.Net)介紹

Moles是前陣子91大推薦我用的Mock的Framework,它跟Moq與Rhino.Mocks這類的套件不同,Moq與Rhino.Mocks這類的Mock是對Interface或Abstract Class做Mock,而Moles是Mock整個CLR(Common Language Runtime),破除Moq等Mock套件的限制,非Interface或Abstract Class也可以Mock,而且還可以對Static Method來Mock,如DateTime.Now或File.Open等等Static Method,使原本在開發時不用為了方便測試而過度設計(如小弟之前為了方便測試,把DateTime又加了一層DateTimeProvider,當我看到這Framework後,就覺得我之前的作法非常的無聊,可參考Unit Test小技巧 : DateTime的Stub)。

...繼續閱讀 »

[小東西].Net 4.0增加的ObservableCollection類介紹

  • 27195
  • 0
  • .Net
  • 2010-11-04

System.Collections.ObjectModel.ObservableCollection不是什麼新鮮的東西,早在幾年前,就存在Silverlight與WPF中,它跟一般的Collection最大的不同地方在,它可以被監控,當集合有所變動,會產生事件,可以控制變化,如UI亓件需要監控集合,當變動時UI必需有所調整,或新增資料到集合中,要做一些初始化的動作等等。

...繼續閱讀 »

[小技巧].Net Framework 4.0 Enum新增的HasFlag方法

我想很多人會習慣用Enum作為旗標,因為同樣是以邏輯And與邏輯Or運算,會比用Int來的好閱讀,並竟誰會知道1、2、4代表什麼東西,尤其專案更多旗標時更難分辦,用Enum因為可以具名化,以文字來代替數字,很容易就可以了解數字代表的意義,不過在.Net Frameword 4.0之前要對Enum作運算,寫的比較多,較為麻煩,也曾寫過ExtensionMethod來簡化作業,不過.Net Frameword 4.0有內建的,就用內建的吧。

...繼續閱讀 »

繼承時,用new修飾詞的陷阱,覆寫property時的錯誤

有一次寫Code時,因為要寫泛型與非泛型的類別,為了多型所以泛型繼承非泛型,在將其中要泛型的property用new覆寫,可是執行實一直發生NullReferenceException,追縱下原來是用錯了property自動實作寫法,而且沒想到前幾天我的同事也跟我犯了同樣的錯誤。

...繼續閱讀 »

用EventLogReader查詢特殊EventLog

最近在寫Windows Task Scheduler相關的功能,想取某Task的EventLog,但用System.Diagnostics.EventLog只能取得基本的EventLog,後來發現應該要使用System.Diagnostics.Eventing.Reader.EventLogReader,而且EventLogReader可以下查詢,過濾出所需的資料。

...繼續閱讀 »

C#仿Oracle Decode,將ValueType對應成String

在寫Page,有時會有int、bool等等要轉成文字輸出,如: <%: item.Enable ? "啟用" : "停用" %>,用? : 處理雖然方便,但如果要轉換的String加上二個以上,就非常難處理,可是Page的這三個<%: %>、<%= %>、<%# %>語法,不能用if或switch,因為有用過Oracle,很喜歡它的Decode函式,所以我就自己寫一組Extension Method來處理。

...繼續閱讀 »

[小技巧]Entity Framework強型別Include

  • 17370
  • 0
  • .Net
  • 2011-04-10

在Entity Framework中如果不設定為Lazy Loading Enable=true,勢必要自己處理關聯資料的載入,如:用Load或Include的,但因為Include的參數是用string,個人很討厭沒有IntelliSense,且String不小必改了TableName後,工具不易找到錯誤,所以小弟我寫一個Extension Method來擴展。

...繼續閱讀 »

Unit Test小技巧 : DateTime的Stub

為什麼要寫一個DateTime的Stub呢?

在有些情況必需判斷今天,如不同的節日,不同的Logo,因為System.DateTime.Now或Today,沒有辦法模擬,寫Unit Test時就沒有辦法測各個時間點的反應,總不可能做個測試要改系統時間吧。

...繼續閱讀 »

Expression應用:把它當參數用

在寫商業層(Business Logic Layer)或資料存取層(Data Access Layer),最覺得麻煩的是,明明是同樣的資料要出輸,要為個個不同的需求做條件篩選,每一個條件都要寫成一個參數,然後一堆的if判斷,而以多一個條件又要多一個參數,或是寫一個新的Method,不小心還會影響其他地方,我覺得是一個焦油坑,就在思考有什麼方式比較好,就讓我想到Linq的方式,用Expression。

...繼續閱讀 »

Entity Framework批次Update與Delete

  • 41027
  • 0
  • .Net
  • 2011-04-10

用Linq To Sql或Linq To Entity Framework,在Select方面用起來有如神助飛快的方便,但在批次Update或Delete方面就遜色很多,完全就如Ado.Net時期下SQL一樣,沒有物件導向可言。

本篇將介紹如何用挖出Entity Framework的Metadata,以Expression的方式組成Sql。

...繼續閱讀 »

使用Expression做Linq的參數化排序

  • 21132
  • 0
  • .Net
  • 2010-08-24

Linq非常的好用,減少大量的資料庫操作手序,使用具名的類別,減少了在程式中寫SQL寫錯字的可能性,問題來了,如果我想用QueryString中的參數,作為排序的依據,但是因為是具名的類別,不能指定字串,剛開始我是用switch一個一個指定,但欄位一多就覺得這方法很笨,在搜尋更好的方法中發現使用System.Linq.Expressions.Expression可以決解這個問題。 如果各位有仔細看,會發現System.Linq.Queryable下的Method參數都有Expression,如本篇要用的OrderBy。

...繼續閱讀 »

自動判斷時區(TimeZone)與時間轉換之IP address database

  • 30526
  • 0
  • .Net
  • 2012-01-04

前些日子,一個專案因為使用者分散在不同的國家中,所以有一個需求是必需要自動判斷使用者所在的時區,將時間轉換成當地時間,有找到幾個方案,其中使用IP address database是比較簡單的,有很多公司有推出IP對應的國家、地區、時區,大部分都要錢,不然就是免費版本的資料量不多,剛好有找到一家完全免費的IpInfoDB,本篇分享如何用此資料庫完成時區轉換。

...繼續閱讀 »

手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)

  • 18576
  • 0
  • .Net
  • 2010-11-23

在Visual Studio 2010測試專案中,多了很多測試項目,而其中之一的Coded UI Test是用來以代碼的方式做自動化使用者介面測試,剛開始我以為只能用錄製然後產生代碼,雖然錄製的很方便,不過如果事後要修改非常的麻煩,而且產生的Code非常的多,要刪除一個不要的測試,完全無從下手,後來看到除了用錄製外,其實也可以用自己寫的方式,我實際寫過真的比錄製的好維謢,而且代碼乾淨許多。

...繼續閱讀 »