C# 的 var 是極度的好物,它可以幫你解決長名稱或容易弄錯的型別的自動轉換,但如果用 var 只是拿來規避重構所產生的物件設計問題,那其實只是鴕鳥心態而已。
[.NET][Design Patterns] 無辜的 Repository Pattern
- 16361
- 0
- Design Pattern
因為最近分層架構的流行 (拜三隻豬之賜?),愈來愈多人談論起 Repository 的設計,也開始有人認為 Repository 無用,說實在的,Repository 有用於否,存乎一心,當你認為它有用時,隨手寫了它也不會覺得奇怪,但如果一開始就認為它是多餘的,就算人家給你程式產生器,你還是會認為它是多餘的。
[C#] 在 Visual Studio 2015 使用 C# 7
昨天在 "C# 7 不能編譯?" 一文的最後,我有提到不是一定要 Visual Studio 2017 才能使用 C# 7,只要 Microsoft.Net.Compilers 可以運作 (.NET 4.5.1 以上),就能使用 C# 7 快樂的寫程式,有朋友回應說 Visual Studio 2015 上使用 C# 7 ,Microsoft.Net.Compilers 已經升級到 2.0,但卻無法編譯... (這個問題要解決有個但書)
[C#] C# 7 不能編譯? 其實是 Microsoft.Net.Compilers 版本問題
C# 7 隨著 Visual Studio 2017 出爐後,相信大家一定是躍躍欲試,好好的利用 C# 7 各式的語法糖 (誤) 來簡化寫碼的工作,但是如果你是由 Visual Studio 2015 升上來的 C# 專案,可能會遇到無法使用 C# 7 語法的問題,其實解決方案很簡單的...
[.NET] 關於晚期繫結 (Late Binding)
- 7177
- 0
- .NET Framework
- 2016-10-14
晚期繫結是一種程式語言與作業系統的手法,用意在於避免因為編譯時期的型別檢查機制,導致程式員在編寫程式時,需要處理過多的型別資訊 (Type Information),晚期繫結可以有效的處理在平台之間型別資訊的隔離,讓編譯出來的程式可以在特定的平台之間執行,而不需要被型別資訊綁住,不過也不能過度濫用,除非原生平台就是要用晚期繫結 (例如 JavaScript)。
[.NET] 選用介面與抽象類別的原則
- 6007
- 0
- C# and VB.NET
- 2017-03-01
這種問題大概也是學 OOP 的人最會問的十大 FAQ 之一,介面和抽象類別都有對其實作者與衍生類別有相當的強制力,因此如果只是要強制實作者必定要實作某些方法或屬性的話,其實這兩種都能用,不過實際上在用時還是有差異的,這些差異要看你的原始目的以及強制力的範圍而定。
[.NET] 動態語言能力:自製 dynamic 物件 (2): 使用 DynamicObject 物件
- 8877
- 0
- C# and VB.NET
前一篇我們說明了使用 ExpandoObject 輕易自製出動態物件的能力,光是使用 ExpandoObject 就能滿足我們大多數的需求,不過若是想要進一步的深入到動態語言的機制來建立動態物件的話,那麼我們可以利用 DynamicObject 物件來實作。
[.NET] 動態語言能力:自製 dynamic 物件 (1): ExpandoObject 物件
- 13882
- 0
- C# and VB.NET
dynamic 型別,這個由 C# 4.0 (.NET Framework 4.0) 開始,打開了 C# 這個編譯式語言的動態之路,它的執行時期決議機制,使得開發人員能在只知道它的成員的情況下即可呼叫使用,它是動態語言執行期 (Dynamic Language Runtime, DLR) 的一部份,相對於 CLR (Common Language Runtime) 需要編譯才會產生相關的程式結構,在 DLR 的機制下,程式只在執行期才會解析相關的程式結構,並產生執行器所需要的資訊,而由於 DLR 是在 CLR 之上,使得 DLR 平台可完全相容於 CLR,並且與 CLR-compliant 的平台與程式語言相互使用。
[.NET] PropertyGrid 控制項的進階使用:自訂資料檢視與編輯器
- 20201
- 0
- .NET Framework
最近這一個月事情還真不少,不斷的在嘴砲和務實的角色之間切換,也寫了不少的程式碼,而且為了因應今年 9/13-15 的微軟大拜拜 (Tech.days) 的課程,我還特別寫了支範例程式準備要在課堂上 demo 用,這支範例程式是 Windows Azure Platform 上的服務管理應用程式,核心均來自 Service Management APIs,很快的,就在 Tech.days 2011 Taiwan 研討會中將正式釋出...
[OAuth Series] OAuth 的服務實作 ... 動念
OAuth 的服務實作 ... 動念中。
[.NET][OAuth Series] EasyOAuth Library for Web Application
- 27767
- 0
- .NET Framework
自昨天首發 EasyOAuth Library for Desktop Application 後,今天再進一步發表 EasyOAuth Library for Web Application,這個函式庫可以支援 ASP.NET 與 ASP.NET MVC 應用程式開發支援 OAuth 功能的 Web 應用程式,它一樣可以在少量程式開發的情況下讓 Web 應用程式支援 OAuth 的功能,並且與 EasyOAuth Library for Desktop Application 一樣,可支援 Google, Facebook, Yahoo 與 Twitter 四種內建的 OAuth Service Provider。
[.NET][OAuth Series] EasyOAuth Library: 容易使用且可擴充的 OAuth Library
- 12925
- 0
- .NET Framework
這是筆者的第三個 Codeplex 開放原始碼專案,承繼前面四篇 OAuth Series 文章的說明,EasyOAuth Library 建構於 .NET Framework 之上,並且可以很容易的將 OAuth 的功能套用到自己的 .NET 應用程式中,並且開發人員可以依照 EasyOAuth Library 開放的介面,為非內建的 OAuth Service Provider 開發介面,以在 EasyOAuth Library 中直接使用。
[OAuth Series] 使用 Access Token 存取 Private APIs
- 24102
- 0
- .NET Framework
在前一回完成了整個 OAuth 驗證與授權的流程後,程式應該可以成功取得 Access Token 以及 Access Token Secret,只要有這兩個資料,應用程式就可以以 Access Token 所代表的使用者來與 OAuth 服務的 Private API 來互動,大多數 OAuth 服務上的 API 都會需要先取得 Access Token 後才可以使用 (雖然還是有少數可以不用啦),所以這篇文章就來說明怎麼使用 Access Token 來存取 Private APIs。
[OAuth Series] 撰寫程式,完成 OAuth 驗證與授權,並處理 OAuth 的各式參數
在前一篇文章中,已經大略的介紹過 OAuth 所使用到的各類參數,這些參數的產生與使用將會決定 OAuth 的程序是否順暢,因為在每次針對服務的 private API 呼叫,都會用到 OAuth 的認證標頭訊息,所以怎麼樣產生正確的訊息就是用戶端程式最重要的課題。
[如何學習寫程式] #9 - 寫程式的人,你不能不會 "資料結構" Part 1
- 30818
- 0
- .NET Framework
- 2017-03-26
資料結構 (data structure) 是資料的組成方式,資料可以是字串或是二進位資料 (binary data),組成方式則要看不同資料整理的需求,可以是分布在記憶體不同位置,然後用特定方法管理,或是以特別的格式排列組合,以達成有效率管理資料的方式,而一般程式設計人員接觸到最多的是資料結構,因為這會決定你在程式中處理資料的方式,簡單的資料當然可以用很簡單的結構來組織,但是如果在寫程式時不在乎資料結構的話,很容易發生寫出的程式效率低落的問題。
[.NET] 使用 .NET Framework 開發 ActiveX Control (4) - 開放事件給 JavaScript
- 14617
- 0
- .NET Framework
前面三篇文章,筆者說明了如何使用 C# 並配合 .NET Framework 來開發 ActiveX Control,相信只要有動手做的讀者現在應該都很快樂的在使用它吧,不過最近有一個新的需求出來:如何由 ActiveX Control 開放事件,並且由 JavaScript 依事件作反應。
[.NET] 使用 Reflection 呼叫泛型方法
- 24071
- 0
- .NET Framework
本文會介紹如何使用 Reflection 來呼叫與存取類別中的泛型方法。
[Code隨手寫] 樂透對獎程式兼新年恭賀
- 13080
- 0
- C# and VB.NET
- 2011-02-08
適逢虎年除夕,即將邁入兔年的前一刻,台彩宣布百萬中獎的100個號碼,但因為一張一張對真的會眼花,索性花了十來分鐘撰寫了一支小程式,由電腦去做這件事,雖然對的結果 ... 沒中 Orz,但其實寫下去也是蠻有趣的,但會不會再改成真的可以對獎的程式,那就看我想不想做了。順道藉此文恭祝大家新年開運旺旺來,心想事成,萬事如意。
[.NET] dotFB : Facebook Graph API Client Library for .NET
- 26779
- 0
- .NET Framework
- 2010-12-18
這是筆者在 Plurk.net 開放原始碼專案後的第二個 Codeplex 開放原始碼專案,它會直接利用 Facebook 的 Graph API 介面與 Facebook 溝通,並在使用者給予的適當授權下,在使用者的塗鴉牆上張貼訊息,張貼文章,建立活動,上傳相片等等。
[.NET] 使用 HTTP Handler 部署不同作業系統版本的 ActiveX Control
- 8972
- 0
- .NET Framework
筆者在 ActiveX 控制項開發的封裝部署一文的最後,曾經提到 Windows XP 和 Windows Vista/7 的部署差異,這會讓開發人員需要依照作業系統的不同來撰寫 INF 檔案來自動化安裝,而且還要在網頁中偵測不同的作業系統給予不同的 CAB 檔案,但我們有一些方法來簡化這個部份的處理,讓開發人員可以在不動一行 <object> 宣告下,支援 Windows XP 和 Windows Vista/7 的作業系統環境。其實方法很簡單,只要使用 HTTP Handler 就能做到了。
[.NET] 使用 .NET Framework 開發 ActiveX Control (3) - 封裝,簽章與部署
- 57334
- 0
- .NET Framework
- 2011-10-31
本文將會把最後的程序給完成,當完成這個程序後,你就可以把你的控制項部署出去了。
[.NET] 使用 .NET Framework 開發 ActiveX Control (2) - 使用 C# 開發 ActiveX 控制項
- 95874
- 0
- .NET Framework
本文將會開始以 C# 實作控制項,讓你可以有開發控制項的經驗。
[.NET] 使用 .NET Framework 開發 ActiveX Control (1)–背景知識
- 51276
- 0
- .NET Framework
- 2010-12-26
本文會介紹 ActiveX Control 的背景知識,以及在 .NET 上開發 ActiveX Control 的基礎。
[.NET] Plurk.NET: Microsoft .NET 與噗浪的邂逅
Plurk.NET: Microsoft .NET 與噗浪的邂逅
[VS2010] 型別等價實例:在免部署 Office PIAs (Primary Interop Assemblies) 的情況下存取 Office 物件模型
- 12789
- 0
- .NET Framework
[VS2010] 型別等價實例:在免部署 Office PIAs (Primary Interop Assemblies) 的情況下存取 Office 物件模型
[VS2010] 型別等價(Type Equivalence)
- 10169
- 0
- .NET Framework
- 2010-01-25
[VS2010] 型別等價(Type Equivalence)
[VS2010] C# 4.0 語言新功能:Named Argument and Optional Parameters
- 17032
- 0
- C# and VB.NET
[VS2010] C# 4.0 語言新功能:Named Argument and Optional Parameters
[Reflection] 使用 Reflection 呼叫參數中有 params 的方法
- 6247
- 0
- .NET Framework
筆記:如何使用 Reflection 呼叫參數中帶有 params 類型不定個數參數的方法。
善用 System.Attribute,讓你的元件更具彈性
- 25865
- 0
- C# and VB.NET
在類別中使用中介資料宣告,讓開發人員在使用你的類別時可簡單的以宣告方式即可設定元件資訊,而不需要寫程式。
Active Directory: 如何在 Domain\User 與 AD 中的 User Principal Name 間互轉
- 9474
- 0
- Active Directory
如何在 Domain\User 與 AD 中的 User Principal Name 間互轉 (IADsNameTranslate 的方法)
- 1
- 2