在C#接口中使用泛型

时间:2015-05-22 17:17:42

标签: c#

在我的C#应用​​程序中,我有一个界面如下:

public interface IObject
{
  Task<T> GetById<T>(int id);

  Task<T> GetAll<T>();      
}

然后我有一个实现此接口的类:

public class MyClass : IObject
{
  public async Task<MyClass> GetById(int id)
  {
    return null;
  }

  public async Task<List<MyClass> GetAll()
  {
    var results = new List<MyClass>();
    return results;
  }
}

在构建时,我收到以下错误:

  

MyClass没有实现接口成员&#39; IObject.GetById(int)

     

MyClass没有实现接口成员&#39; IObject.GetAll(int)

我做错了什么?

1 个答案:

答案 0 :(得分:8)

您需要将T移至界面,看起来您需要GetAll才能返回List<T>

public interface IObject<T>
{
  Task<T> GetById(int id);

  Task<List<T>> GetAll();      
}

public class MyClass : IObject<MyClass>
{
  public async Task<MyClass> GetById(int id)
  {
    return null;
  }

  public async Task<List<MyClass>> GetAll()
  {
    var results = new List<MyClass>();
    return results;
  }
}