如何从方法返回IEnumerable <T>

Dee*_*ons 6 c# generics collections interface class

我正在为一个示例项目开发Interface我希望它尽可能通用,所以我创建了一个如下所示的界面

public interface IUserFactory
{    
    IEnumerable<Users> GetAll();
    Users GetOne(int Id);
}
Run Code Online (Sandbox Code Playgroud)

但后来发生了我不得不复制下面的接口

public interface IProjectFactory
{    
    IEnumerable<Projects> GetAll(User user);
    Project GetOne(int Id);
}
Run Code Online (Sandbox Code Playgroud)

如果你看上面差异只是他们返回的类型,所以我创建了类似下面的东西只是为了找到我得到的错误Cannot Resolve Symbol T 我做错了什么

public interface IFactory
{    
    IEnumerable<T> GetAll();
    T GetOne(int Id);
}
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 11

您需要使用通用接口/,而不仅仅是泛型方法:

public interface IFactory<T>
{    
    IEnumerable<T> GetAll();
    T GetOne(int Id);
}
Run Code Online (Sandbox Code Playgroud)

在接口/类上定义泛型类型可确保类在整个类中都是已知的(无论使用何种类型说明符).

  • @Deeptechtons - 几乎.`Type`是一个实际的.NET类名,所以这可能看起来很模糊.但泛型类型参数的名称可以是任何名称. (2认同)

stu*_*rtd 10

在接口上声明类型:

public interface IFactory<T>
Run Code Online (Sandbox Code Playgroud)