2013年1月14日 星期一

C# - 如何知道泛型的型態? 趴兔

最近在測試 Oracle 的資料庫,
簡單的說就是要把底層改成連到 Oracle 去,
但是又不想 hard code 直接把所有的 SqlConnection 改成 OracleConnection,
然後就想到上次那個泛型的寫法【C# - 如何知道泛型的型態?】,
但是不幸的是...原來上次那個寫法只能用在基本資料型態,
所以我沒有辦法依照上次那樣寫來區分 SqlConnection 跟 OracleConnection,
但是我想應該是有辦法的才對,所以又要找好朋友估狗了!
後來測試出可以用 typeof 的方式寫,
先改涵式的宣告,如下:

private T GetConnection<T>

在程式裡面可以用下面的方式這樣判斷:

if (typeof(T) == typeof(OracleConnection))
if (typeof(T) == typeof(SqlConnection))