
自從知道 PostSharp 這套有趣的 AOP 元件後,就一直對其中的原理感到好奇。根據官方部落格,其中所使用的一項技術,就是 IL Injection,所以我嚐試尋找可行的作法。 .Net Framework 其實有提供相關的功能(ILGenerator),可參考下列網址: http://msdn.microsoft.com/zh-tw/library/system.reflection.emit(v=vs.95).aspx
卑微研究生 發表在 痞客邦 留言(0) 人氣(117)
在把物件轉為 json 時想到的一個問題,如果可以依據特定條件把類別的某些 property 或 field 刪掉,這樣產生 json 字串時就不會包含一些無用的屬性,於是就順手研究如何動態的產生類別。 要動態產生類別,會需要下列幾個物件: AssemblyBuilder ModuleBuilder TypeBuilder FieldBuilder
卑微研究生 發表在 痞客邦 留言(0) 人氣(71)
最近看到的東西,所以筆記一下。 首先開啟 PowerShell Console Window,而且是以系統管理員身份執行。之後下參數:Import-Module WebAdministration接下就可以使用相關的 IIS 指令,例如:Get-WebsiteState -Name "Default Web Site"其它的指令,可以參考以下網址:http://technet.microsoft.com/en-us/library/ee790599.aspx
卑微研究生 發表在 痞客邦 留言(0) 人氣(17)
對於一個開放於全球的網站或服務,在時間上的顯示是一個問題,因為各個國家都會有所謂的時差,好在 .Net Framework 提供 TimeZoneInfo 類別來解決這個問題。 TimeZoneInfo 的使用很簡單,一開始利用 FindSystemTimeZoneById 找到對應的 TimeZoneInfo 物件,就可以利用該物件來轉換時間。下列程式碼是示範如何將 UTC Time 轉為東京的當地間時。 DateTime time = DateTime.UtcNow;
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
Console.WriteLine(string.Format("UTC Time:{0}", time.ToString()));
Console.WriteLine(string.Format("Tokyo Time:{0}", TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZoneInfo)));
卑微研究生 發表在 痞客邦 留言(0) 人氣(47)
C# 5.0 提供了 Async 關鍵字,用來做非同步的功能。當然在 F# 也會有同樣的功能,而且個人認為寫法比 C# 稍微簡潔一些。 下列 F# 程式碼,宣告了一個 async 區塊,之後再呼叫 Async 類別的 StartAsTask 方法。 namespace FSharpLibrary
type AsyncTestClass1() =
member this.AsyncTest() =
let method1 =
async {
do! Async.Sleep(3000)
return "Test Value"
}
//method1 |> Async.StartAsTask
Async.StartAsTask method1
卑微研究生 發表在 痞客邦 留言(0) 人氣(21)

寫程式時,一定會遇到要使用 switch case 語法的時候,但這語法的缺點在於一次就只能設定一個變數,如果要一次使用多個變數判斷,就只能使用 else if 這個語法。但在 F#,則可以使用 Pattern Match 來解決。 現在用下列程式碼來示範如何使用 Pattern Match: let y = 0
match y with
| 1-> printfn "one"
| 2-> printfn "two"
| other -> printfn "other value"
let bl = true
match bl with
| true -> printfn "It's true"
| false -> printfn "It's false"
卑微研究生 發表在 痞客邦 留言(0) 人氣(27)
F# 號稱動態語言,但跟其它語言整合的話,似乎也只能回到先編譯成 dll 元件的老路。如果想在系統中,隨時可以修改 F# 原始碼並且直接執行,動態編譯後再由 C# 程式呼叫可能是唯一的方法。 為了滿足這個需求,我找了一個開放原始碼的元件: http://fsharppowerpack.codeplex.com/ 這個元件比我想像中的更容易使用,寫出來的程式碼不會太多:
卑微研究生 發表在 痞客邦 留言(0) 人氣(41)

如果想知道程式碼裡引用了哪些類別、哪些函式,用一般的 reflection 方法似乎不管用。後來在網路上找到了這篇:
http://stackoverflow.com/questions/5490025/c-sharp-reflection-and-find-all-references
這篇文章提供了一個方法,後來就把MethodBaseRocks.cs這支程式抓回來用,效果不錯。
卑微研究生 發表在 痞客邦 留言(0) 人氣(72)
微軟推出 .net 平台也有十年的時間了,一直以來都是主推 C# 及 VB.NET。這幾年也推出了直譯式語言 F# (實際上也可當作是編譯式的語言),目前已經到了 3.0 版。雖然 C# 非常強大,但某些情況 F# 也是一個不錯的選擇,本篇文章會介紹 F# 的基本語法,當作是快速入門。 首先是變數的宣告,F# 不需要特別指定變數型態,完全是看後面指定的值而定。 let x = 1;
printfn "%d" x
卑微研究生 發表在 痞客邦 留言(0) 人氣(413)
長輩常說,凡事都要留個餘地,對自己對別人都好。 每次思考,自己都覺得事情都該有個底限,也就是要留個餘地。但水杯終究會滿,這個杯子偏偏又特別小。二個星期前,理智上整個崩潰了,壓抑的情緒整個爆發,就因為我看到的那一句話。一直在想,如果有適當的抒發情緒,或許還可以繼續撐。但最後,只想把整個關係斷掉,因為關係還在,就會抱著希望。 之前聽某個牧師說,人不該有思想上的暴力,或許說的就是我這種人。也好,這證明了自己跟任何人都不適合。再過一天,就會有一段時間完全不會見到面,或許能讓心情冷靜下來。嗯…不過就算時間過這麼長,自己應該還是不會被原諒,但這樣我心裡會好過些。
卑微研究生 發表在 痞客邦 留言(0) 人氣(21)