C#泛型声明语法:class:where T:class,new()
- where T:class限定泛型T为class(类),也可以直接继承任何一个类
- new()表示为该类创建构造函数
如下:
public class BaseDAL<T> where T : class,new ()
{
//此处略去几万行代码
}
public partial class FrmGenerateEdit<T> : Form where T : class, new()
{
public FrmGenerateEdit(string sheetName, string primaryKeyField)
{
InitializeComponent();
isAdd = true;
CurrentTableName = sheetName;
dt = NpoiExcelOperateUtil.ExcelToTable(AppDomain.CurrentDomain.BaseDirectory + "Conf\\DataGridViewConf_Form.xls", sheetName);
}
}
C#泛型之Form(UserControl)
泛型Form||UserControl 即 :
BaseForm<T>:Form
根据泛型的定义:泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行。
可以得到如果多个界面有相关关系,并且用到的Model继承自一个接口,或类,那再加上反射的话,可以节省大量代码.
创建一个类BaseForm继承自Form,创建泛型T,然后可以加上限制.UI包含了界面上的button,不要用Design.cs,不然编译不过去.
创建一个中间件,这是一个类继承自BaseForm,它也不能有.design.cs文件.一定要带一个空的构造函数,不然后面的几面无法进入界面设计器
创建一个Form,它继承自StringMiddleware
如果想创建一个Int32类型的界面怎么办呢?跳转到第二步,第三不.Int32Form 和StringForm的一些通用方法可以在BaseForm里面进行编写.
运行结果: