2015-12-29 24 views
0

是否可以在運行時將類型傳遞給IDBConnection.Get<T>擴展?將類型傳遞給IDBConnection獲取< T >()

例如,我有像Countries,States,Cities這樣的類和一個包含其中任何一個的對象變量實例。我想類的類型傳遞給Get<T>方法

僞代碼:

var myobject = _somedata; //it could be of type countries, states, cities, etc... 

var q = sqlConn.Get<typeof(myobject)>() 

反正有沒有做到這一點?

+0

這是可能的,但這不應該這樣做。這樣做的目的是什麼? –

+1

你的例子中'myobject'和'q'有什麼類型?請將示例中的'var'替換爲編譯器推斷的實際類型。 –

回答

2

你可以,但你不想。由此產生的代碼是討厭的。

而是嘗試編寫使用參數類型的自己的擴展方法。

public static T GetLike<T>(this IDbConnection conn, T likeType) 
{ 
    return conn.Get<T>(); 
} 

然後,你可以簡單地調用

var q = sqlConn.GetLike(myobject); 

而且匿名類型會被編譯器推斷。

+0

謝謝。美麗的代碼 –

相關問題