C#实体类中如何定义泛型集合类型的属性
我的分页类中有个属性是存放数据集的,我希望以后的数据集都是List<T>的形式,所以我定义了一个PublicList<T>XXX的属性,但是报错,...
我的分页类中有个属性是存放数据集的,我希望以后的数据集都是List<T>的形式,所以我定义了一个Public List<T> XXX的属性,但是报错,说找不到T这个类型或namespace。那我应该怎么定义这个泛型集合的属性呢,是用List<object>还是object好,我希望是约束这个属性必须是泛型集合的,如果我没有描述清楚,请留言,我继续完善
展开
4个回答
展开全部
不知道楼主是不是这个意思:
public interface ITSource { } //用于限制T的接口
public class MyPageClass<T> //你所说的分页类
where T : ITSource //限制T必须实现了ITSource接口
{
public List<T> DataCollection { get; set; } //你的数据集
}
public class EntityA : ITSource //实现了ITSource接口的实体类
{
///some code
}
public class EntityB //未实现ITSource接口的实体类
{
///some code
}
以下是测试代码:
public class Program
{
public void Function()
{
//EntityA实现了ITSource接口,可以实例化。
MyPageClass<EntityA> EntityAColletion = new MyPageClass<EntityA>();
//EntityB没有实现ITsource接口,实例化会出错。
MyPageClass<EntityB> EntityBColletion = new MyPageClass<EntityB>();
}
}
public interface ITSource { } //用于限制T的接口
public class MyPageClass<T> //你所说的分页类
where T : ITSource //限制T必须实现了ITSource接口
{
public List<T> DataCollection { get; set; } //你的数据集
}
public class EntityA : ITSource //实现了ITSource接口的实体类
{
///some code
}
public class EntityB //未实现ITSource接口的实体类
{
///some code
}
以下是测试代码:
public class Program
{
public void Function()
{
//EntityA实现了ITSource接口,可以实例化。
MyPageClass<EntityA> EntityAColletion = new MyPageClass<EntityA>();
//EntityB没有实现ITsource接口,实例化会出错。
MyPageClass<EntityB> EntityBColletion = new MyPageClass<EntityB>();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分页类按这样定义就可以了,也就是class名字后面加个<T>:
public class PageClass<T>{
public List<T> XXX{get;set;}
}
public class PageClass<T>{
public List<T> XXX{get;set;}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你看下网上存在的分页类,就会发现,他们都是定义一个实体接口(假如命名为IDataList),规定一些必须拥有的属性(ID,Name等等)..此处的泛型就是List<IDataList>..
这样子的好处是,首先对传入的数据有了约束,其次在分页方法内可以直接以接口的方式调用定义好的属性,而如果你用List<object>,还需要靠反射才能获得
这样子的好处是,首先对传入的数据有了约束,其次在分页方法内可以直接以接口的方式调用定义好的属性,而如果你用List<object>,还需要靠反射才能获得
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询