我想創建一個泛型類的定義:T不包含RowKey
public class ClassName<T>
{
public T AccessEntity(string id)
{
return (from e in ServiceContext.CreateQuery<T>(TableName)
where e.RowKey == id // error here!
select e).FirstOrDefault();
}
}
在這段代碼中我得到錯誤:
T不包含RowKey定義
但在運行時將取代T的參數具有RowKey的定義。也許因爲編譯器在編譯時沒有得到T中RowKey的定義,這就是爲什麼我得到這個錯誤。任何人都可以告訴我如何解決這個問題?
參考作爲註釋 - 我upvoted正確答案之一:編譯不在乎T將是什麼版本。它關心在編譯時它知道些什麼,這意味着你可以創建ClassName,並且Dumbo沒有RowKey - >錯誤。 Adda約束;) –
TomTom
2012-07-23 14:53:29
Pro說明了TomTom的觀點:在c#中,你可以在運行時編寫一個*類型,並且調用新類型的泛型類型 - 只要滿足約束條件,它就可以工作。這與C++模板非常不同。 – 2012-07-23 15:08:27