利用泛型與反映(Reflection)達到函式共用

摘要:利用泛型與反映(Reflection)達到函式共用

我想在泛型與Reflection在實務上的應用,相當廣泛.
在此我也小小分享目前在實務上所遇到的問題與應用
如果有何不當或需要改善的地方,
也希望各位前輩能多多指導
 
就以JSON.NET中 JObject與JArray這兩個Class內所使用的Paser Function為例
在JSON Object中的格式如下:

{"Status":true,"name":"toast"}
如要將其解析,就會用到JObject.Paser()這個Function
反之如果是 JSON Array 的格式:

["Toast","Banana","Orange"]

那在JSON.NET中就會使用JArray.Paser()這個Function

下列寫法就無利用泛型與Reflection的方式做一個對照
 

使用方式:

輸出畫面:

看起來沒什麼太大不同,

但是仔細想想可以有更好的做法,

兩個fuction是可以結合共用的.

所以下面的範例就是利用泛型與反映嚕

 

在看看下列的使用範例

輸出畫面:

其實在輸出上是一模一樣,

但這時後應該會發現在程式碼上的差異,

透過帶入不同的型別宣告,運用泛型與Reflection

來達到讓JsonPaserRef這個Class中Rtval function的共用

最後奉上範例程式碼

請點我

 

 

參考連結

[C#] 泛型的意義 (Generics)

泛型的優點 (C# 程式設計手冊)

反映 (C# 和 Visual Basic)