我有一个类似下面的模型类,
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;等提前非常感谢任何帮助。
答案 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();
}
}