泛型接口

复制代码
using System;
using System.Collections.Generic;
using System.Text;

namespace 泛型
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化接口
            IGenericl<System.ComponentModel.IListSource> factory =
                new Factory<System.Data.DataTable, System.ComponentModel.IListSource>();
            //输出指定泛型的类型
            Console.WriteLine(factory.CreateInstance().GetType().ToString());
            Console.ReadLine();
        }
    }

    public interface IGenericl<T>
    {
        T CreateInstance();//接口中调用CteateInstance方法
    }

    //实现上面泛型接口的泛型类
    //派生约束where T : TI(T要继承自TI)
    //构造函数约束where T : new() (T 可以实例化)
    public class Factory<T, TI> : IGenericl<TI> where T : TI,new()
    {
        public TI CreateInstance()//创建一个公共方法CreateInstance
        {
            return new T();
        }
    }

}
复制代码

 

posted @ 2013-09-17 23:21  cppwen  阅读(376)  评论(0)    收藏  举报
编辑推荐:
· 别做抢活的导演:代码中的抽象层次原则
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
阅读排行:
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 从 Redis 客户端超时到 .NET 线程池挑战:饥饿、窃取与阻塞的全景解析
· 2025年中总结:我想我克服公众演讲的恐惧了,一个社恐分子突破自我的故事
· 3.1k star!推荐一款开源基于AI实现的浏览器自动化插件工具 !
点击右上角即可分享
微信分享提示