为什么我不能创建返回类型为List<T>
的接口方法?我遇到这个编译错误“无法找到类型或命名空间名称'T'”
interface ILoader
{
List<T> LoadValues();
}
感谢您的任何意见。
答案 0 :(得分:7)
T
应该在你的界面中是什么?对于编译器,此时T
只是一个未知标识符。
您需要为T
指定一些内容,某些类型用作List<T>
的类型参数。
根据您想要达到的目标,有四种选择:
在接口/类级别声明T
作为通用参数:
interface ILoader<T>
{
List<T> LoadValues();
}
将T
声明为方法级别的通用参数:
interface ILoader
{
List<T> LoadValues<T>();
}
将固定类型指定为T
;例如int
(w.l.o.g。):
interface ILoader
{
List<int> LoadValues();
}
在更高的嵌套级别上将T
声明为通用参数(感谢Jeppe Stig Nielsen指出这种可能性):
class Outer<T>
{
interface ILoader
{
List<T> LoadValues();
}
}
答案 1 :(得分:2)
T generic参数也必须在接口中声明。像这样:
interface ILoader<T>
{
List<T> LoadValues();
}
答案 2 :(得分:0)
你应该这样做:
interface ILoader<T>
{
List<T> LoadValues();
}
或者
interface ILoader
{
List<T> LoadValues<T>();
}
甚至可能:
interface ILoader
{
List<dynamic> LoadValues();
}
^不是最好的主意但可用。