源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅析泛型类接口定义

  • 时间:2020-06-11 07:45 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅析泛型类接口定义
[b]定义最基本的泛型类如下: [/b]
[u]复制代码[/u] 代码如下:
public abstract class GetDataBase<T> :IHttpHandler, IRequiresSessionState {  protected abstract T GetModel(HttpContext context);  protected abstract IList<T> GetList(int pageSize, int pageIndex, string where, string sortname, string sortorder, out int total);      protected JsonFlexiGridData GetFlexiGridData(IList<T> list, int pageIndex, int pageSize, int total, string colkey, string colsinf)     {         PagedList<T> pl = new PagedList<T>();         pl.PageIndex = pageIndex - 1;         pl.PageSize = pageSize;         pl.DataList = new List<T>();         pl.DataList.AddRange(list);         pl.Total = total;         JsonFlexiGridData data = JsonFlexiGridData.ConvertFromPagedList(pl, colkey, colsinf.Split(','));         return data;       } }
其实最简单的只需要添加<T>,就表示泛型类了,可在使用的过程中 pl.DataList = new List<T>();总是提示错误,编译不通过,说是必须是类才可以,于是修改如下
[u]复制代码[/u] 代码如下:
public abstract class GetDataBase<T> :IHttpHandler, IRequiresSessionState where T : class{
[b]1设定泛型基类或者要求 [/b]关键的一句where T : class就表示类型是类,当然如果需要T是其他类型,例如接口,或者是继承与某个类,也是同样的修改方法 例如泛型接口继承于泛型接口IObjectWithKey<TK>,
[u]复制代码[/u] 代码如下:
public interface IDeviceAgent<TK, TCk> : IObjectWithKey<TK>, IDisposable{
例如泛型接口IContainer的第一类型TV必须继承与接口IObjectWithKey<TK>
[u]复制代码[/u] 代码如下:
public interface IContainer<TK, TV> where TV:IObjectWithKey<TK>{
[b]2泛型有多个类型 [/b]
[u]复制代码[/u] 代码如下:
public interface IContainer<TK, TV> where TV:IObjectWithKey<TK>{
就有多个类型,当然,在具体的类中,这两种类型可以相同,也可以不同 其实也就是在一对<>中放置多个类型,有几个类型,就放几个参数,名称没有什么特殊要求 [b]3泛型如果有多个类型约束,例如都要求是类,如何处理 [/b]
[u]复制代码[/u] 代码如下:
public abstract class GetDataBase<TListItem, TModel> : IHttpHandler, IRequiresSessionState     where TListItem : class     where TModel : class
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部