【问题标题】:Using generics in C# interfaces在 C# 接口中使用泛型
【发布时间】:2015-05-23 02:01:51
【问题描述】:

在我的 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 没有实现接口成员'IObject.GetById(int)

MyClass 没有实现接口成员'IObject.GetAll(int)

我做错了什么?

【问题讨论】:

  • 在 IObject 而不是每个单独的方法上定义 T 参数。
  • 但他正在改变GetAll中的T类型。

标签: c#


【解决方案1】:

你需要将T移动到界面,看起来你需要GetAll来返回一个List&lt;T&gt;

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;
  }
}

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 2016-02-15
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
相关资源
最近更新 更多