通过接受一个限定的参数,这个参数是实现某个接口的类,比较起直接接受泛型,而限制这个泛型的类要更加灵活。也就是通常所说的面向接口式的编程。这样可以达到调用实现了这个接口的各种泛型的实例。这种对泛型使用接口约束的应用,在.net框架中有很广泛的应用。下面是一个实例(命名为IntfConstraint)。
首先,需要声明一个接口:
接下来我们定义一个类实现这个接口:
精彩内容从下面开始,接着我们定义一个泛型类,这泛型类被限定了是实现了(我们上面定义的)指定的接口:
这个类的泛型方法如下:
有了如上的定义,我们可以这样使用这个泛型类(数值型参数,接着还有其他类型参数的):
为了展现这个泛型类的灵活性,我又建立了一个完全不同的(对GetValue接口)的实现:
ButtonValue中,生成按钮坐标位置(随机位置,在父对象中)的成员函数,这个和主题关系不大,所以收缩
ButtonVaule中GetVaule和SetValue实现:
下面是第二种(按钮坐标)泛型类的使用:
源代码下载 (已添加了中文注释)