0
我已經創建這個通用方法類型「」不能被用作類型參數「在通用類型或方法T」
public IEnumerable<T> GetByID<T>(IEnumerable<T> source, int id) where T : IFields
{
return source.Where(x => x.id == id);
}
其中IFieds
接口是
public interface IFields
{
string code { get; set; }
int id { get; set; }
}
當我嘗試得到的值,這顯然不會編譯
DB.GetByID(Helper.Database.Table<Items>(), 1);
與以下編譯錯誤。
類型「項目」不能在通用 類型或方法 「DB.GetByID(System.Collections.Generic.IEnumerable,INT)」被用作類型參數「T」。有 是沒有從「項目」到「IFields」的隱含參考轉換
我該如何解決這個問題? 其實,我希望使用lambda表達式「以匿名類型」。
'Items'是否實現'IFields'? –
@ LasseV.Karlsen其實沒有先生 – OrElse
那麼你預計會發生什麼?你特別說'T'必須實現那個接口,然後你嘗試傳入一個沒有的類型。我可以發佈一個簡單的答案,告訴你爲什麼你會得到這個錯誤消息,但我懷疑這不會幫你。請告訴我們更多關於你爲什麼添加了約束的問題,以及爲什麼/當你傳入一個沒有實現它的類型時會發生什麼,或許我們可以幫助你做正確的事情,而不僅僅是說「這就是爲什麼贏了」工作「。 –