有一段高难度的C#代码求教

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:40:59
[Serializable]
public abstract class BusinessBase<TYPE,KEY>:IDataErrorInfo,INotifyPropertyChanged,IChangeTracking,IDisposable where TYPE:BusinessBase<TYPE,KEY>,new()
{
//类的主要内容

}
想请问大家,这个类为什么可以这样定义特别是IDisposable where TYPE:BusinessBase<TYPE,KEY>,new()这几句没有看明白。那个where更是我第一次见用到这个地方。请大家赐教。不好意思我没有分数哈
原来还有分呀,那我只好把剩下的全现出来了

这是C# 2.0中的泛型类定义,

where TYPE:BusinessBase<TYPE,KEY> 约束了泛型TYPE 必须是BusinessBase<TYPE,KEY> 这个类型的,也就是他自己。

另外,这种用法也是.Net中推荐的业务基类的定义,这个基类中定义了一些对业务对象的基本操作,包括脏数据识别、出错处理机制、资源释放等,它这样定义的作用是统一了派生类处理自己的实例对象的接口,比如,

public class Student : BusinessBase<Student,int>
{
//重载基类中的抽象方法
}

new()限制了类型TYPE必须有一个无参数的构造函数

在c#叫做泛型,在c++叫做模板
在< ....>里面的东西是类型,不是变量,可以有多个,每个用逗号“,”分隔开
<TYPE,KEY> TYPE 和KEY是类型,如果没有约束
可以是任何类型,例如 <int,string>或<FileInfo,FileStream>