声明C#泛型类型方法
我有一门课:声明C#泛型类型方法,c#,generics,C#,Generics,我有一门课: internal class Paginated<T> where T : class { public List<T> data { get; set; } public int total { get; set; } public int page { get; set; } public int per_page { get; set; } public Paging paging { get; set; }
internal class Paginated<T> where T : class
{
public List<T> data { get; set; }
public int total { get; set; }
public int page { get; set; }
public int per_page { get; set; }
public Paging paging { get; set; }
}
内部类分页,其中T:class
{
公共列表数据{get;set;}
公共整数总计{get;set;}
公共整型页{get;set;}
每_页公共整数{get;set;}
公共分页{get;set;}
}
在另一节课上,我有一个方法:
public T RequestAllPaginated<T>() where T : Paginated<AnyType> //AnyType???
{
var item = Request<T>();
//Get all data from paging property
if(item != null)
{
var i = item as Paginated<AnyType>; //AnyType???
var data = i.data;
}
return item;
}
public T RequestAllPaginated(),其中T:Paginated//AnyType???
{
var item=Request();
//从分页属性获取所有数据
如果(项!=null)
{
var i=分页的项目;//AnyType???
var数据=i.数据;
}
退货项目;
}
T始终是分页的类型。问题是我如何在RequestAllPaginated
方法声明中确定并在以后强制转换它?尝试此解决方案
public T RequestAllPaginated<T, TK>() where T : Paginated<TK> where TK : class
{
var item = Request<T>();
//Get all data from paging property
if(item != null)
{
var i = item as Paginated<TK>;
var data = i.data;
}
return item;
}
public T RequestAllPaginated(),其中T:Paginated,其中TK:class
{
var item=Request();
//从分页属性获取所有数据
如果(项!=null)
{
var i=分页的项目;
var数据=i.数据;
}
退货项目;
}
替代解决方案:
public Paginated<T> RequestAllPaginated<T>() where T : class
{
var item = Request<Paginated<T>>();
//Get all data from paging property
if(item != null)
{
var i = item as Paginated<T>;
var data = i.data;
}
return item;
}
public Paginated RequestAllPaginated(),其中T:class
{
var item=Request();
//从分页属性获取所有数据
如果(项!=null)
{
var i=分页的项目;
var数据=i.数据;
}
退货项目;
}
TK是T的一部分,这使得声明TK是多余的,我不能将RequestAllPaginated更改为RequestAllPaginated。