浅析泛型类接口定义

 更新时间:2013年07月09日 12:02:40   作者:  
在使用泛型定义类的过程中遇到了不少问题,特记录如下,需要的朋友可以参考下

定义最基本的泛型类如下:

复制代码 代码如下:

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>();总是提示错误,编译不通过,说是必须是类才可以,于是修改如下
复制代码 代码如下:

public abstract class GetDataBase<T> :IHttpHandler, IRequiresSessionState where T : class{

1设定泛型基类或者要求
关键的一句where T : class就表示类型是类,当然如果需要T是其他类型,例如接口,或者是继承与某个类,也是同样的修改方法
例如泛型接口继承于泛型接口IObjectWithKey<TK>,
复制代码 代码如下:

public interface IDeviceAgent<TK, TCk> : IObjectWithKey<TK>, IDisposable{

例如泛型接口IContainer的第一类型TV必须继承与接口IObjectWithKey<TK>
复制代码 代码如下:

public interface IContainer<TK, TV> where TV:IObjectWithKey<TK>{

2泛型有多个类型
复制代码 代码如下:

public interface IContainer<TK, TV> where TV:IObjectWithKey<TK>{

就有多个类型,当然,在具体的类中,这两种类型可以相同,也可以不同
其实也就是在一对<>中放置多个类型,有几个类型,就放几个参数,名称没有什么特殊要求
3泛型如果有多个类型约束,例如都要求是类,如何处理
复制代码 代码如下:

public abstract class GetDataBase<TListItem, TModel> : IHttpHandler, IRequiresSessionState
    where TListItem : class
    where TModel : class

相关文章

  • C#连接SQL Sever数据库详细图文教程

    C#连接SQL Sever数据库详细图文教程

    C#是Microsoft公司为.NET Framework推出的重量级语言,和它搭配最完美的数据库无疑就是Microsoft SQL Server了,下面这篇文章主要给大家介绍了关于C#连接SQL Sever数据库的详细图文教程,需要的朋友可以参考下
    2023-06-06
  • C#实现将Word转化分享为电子期刊

    C#实现将Word转化分享为电子期刊

    曾经由一个项目,要求实现制作电子期刊定期发送给企业进行阅读,由编辑人员使用 Microsoft Word先生成PDF文件,然后将生成的PDF文件转化为JPEG文件,最后将JPEG文件生成电子书模式,本文给大家介绍了C#实现将Word转化分享为电子期刊,需要的朋友可以参考下
    2023-12-12
  • 通过C#实现发送自定义的html格式邮件

    通过C#实现发送自定义的html格式邮件

    本篇文章主要介绍了通过C#实现发送自定义的html格式邮件,详细的介绍了发送HTML格式邮件的方法,有兴趣的可以了解一下。
    2017-02-02
  • C# 委托(delegate) 的小例子

    C# 委托(delegate) 的小例子

    利用委托(delegate)好像也能解决避免大量switch case的代码。
    2013-03-03
  • C# Unicode编码解码的实现

    C# Unicode编码解码的实现

    本文主要介绍了C# Unicode编码解码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 详解C# 代码占用的空间

    详解C# 代码占用的空间

    这篇文章主要介绍了C# 代码占用的空间的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • C#导出GridView数据到Excel文件类实例

    C#导出GridView数据到Excel文件类实例

    这篇文章主要介绍了C#导出GridView数据到Excel文件类,实例分析了C#使用GridView及Excel的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Unity3D开发教程:愤怒的小鸟

    Unity3D开发教程:愤怒的小鸟

    这篇文章详细的讲解了如何从0开发出一个Unity3D的小游戏愤怒的小鸟,本文包含大量的图片与文字描述,也含有大量的源代码,可以让你快速入手,希望本篇文章对你有所帮助
    2021-06-06
  • C#中async和await的深入分析

    C#中async和await的深入分析

    Async/Await是C# 5引入的关键字,用以提高用户界面响应能力和对Web资源的访问能力,同时它使异步代码的编写变得更加容易,下面这篇文章主要给大家介绍了关于C#中async和await的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论