无法将MyModel类型隐式转换为System.Collections.Generic.List <t>

时间:2017-08-16 17:08:58

标签: c# generics

我有一个类似下面的模型类,

public class MyModel
{
    [SQLite.PrimaryKey]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Status { get; set; }
}

和一个Interface类我在其中有一个返回类型的方法类型是MyModel类的方法,如下所示,

public interface IService
{
   List<MyModel> IGetEmployeeDetails();
}

以上界面已在我的服务类中实现,如下所示

public List<MyModel> IGetEmployeeDetails()
{
    return _connection.Table<MyModel>().ToList(); 
}

通过上面的实现,一切对我来说都很好,但是当我尝试将我的Interface方法更改为泛型返回类型时,我遇到了我的接口方法的返回类型问题,如下所示

List<MyModel> IGetEmployeeDetails();List<T> IGetEmployeeDetails<T>();我正在

  

无法隐式将MyModel类型转换为System.Collections.Generic.List<T>

基本上我想让我的接口方法返回类型泛型,但我不知道如何将我的服务类中的结果从MyModel强制转换为泛型类型

仅供参考我曾尝试过以下案例,

  • return _connection.Table<MyModel>().ToList<T>();
  • return (List<T>)_connection.Table<MyModel>().ToList();&amp;等

提前非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  

基本上我想让我的接口方法返回类型泛型,但是   我不确定如何在我的服务类中对结果进行类型转换   MyModel为通用类型。

您正在寻找的是类中的泛型而不是函数的级别,正如您所尝试的那样。

如果函数是通用函数,则调用者指定T,函数必须处理它。在您的情况下,您需要不同的IService实现,每个实现都能够返回不同的集合。所以:

public interface IService<T>
{
   List<T> GetEmployeeDetails();
}

派生的:

public class DerivedService : IService<MyModel>
{
    public List<MyModel> GetEmployeeDetails()
    {
        return _connection.Table<MyModel>().ToList(); 
    }
}