![](/img/trans.png)
[英]Why can't a method declare return type `List<IMyInterface>` and return a concrete class implementing it
[英]Why can't I declare generic List<T> as return type for interface method?
為什么我不能創建返回類型為List<T>
的接口方法? 我遇到此編譯錯誤“找不到類型或名稱空間名稱'T'”
interface ILoader
{
List<T> LoadValues();
}
感謝您的任何投入。
T
應該在您的界面中是什么? 對於編譯器, T
在那時只是一個未知的標識符。
您需要為T
指定一些內容,將某些類型用作List<T>
的類型參數。
根據您要實現的目標,有四個選項:
在接口/類級別上將T
聲明為通用參數:
interface ILoader<T> { List<T> LoadValues(); }
將T
聲明為方法級別的通用參數:
interface ILoader { List<T> LoadValues<T>(); }
將固定類型分配為T
; 例如int
(wlog):
interface ILoader { List<int> LoadValues(); }
在較高的嵌套級別上將T
聲明為通用參數(感謝Jeppe Stig Nielsen指出了這種可能性):
class Outer<T> { interface ILoader { List<T> LoadValues(); } }
T泛型參數也必須在接口中聲明。 像這樣:
interface ILoader<T>
{
List<T> LoadValues();
}
您應該執行以下操作:
interface ILoader<T>
{
List<T> LoadValues();
}
要么
interface ILoader
{
List<T> LoadValues<T>();
}
甚至可能:
interface ILoader
{
List<dynamic> LoadValues();
}
^不是最好的主意,但可以使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.