【发布时间】:2018-02-17 15:33:32
【问题描述】:
我有一个界面
IMyInterface<T>
还有一个班级
TMyClass<T>
现在我希望我只能将类作为一种类型传递给 TMyClass,它也实现了 IMyInterface。
第一次尝试
TMyClass<T:IMyInterface<T>>
但正如预期的那样,现在编译器希望我给他一个实现接口的类型与实现接口的类本身的类型
第二次尝试
TMyClass<D,T:IMyInterface<D>>
我认为,D 将是共享的 DataType,TMyInterface 和 TMyClass 都会使用。
所以在声明了实现接口的类之后
TMyIntegerClass = class(TInterfacedObject,IMyInterface<Integer>)
声明
GMyClass:TMyClass<Integer,TMyIntegerClass>
编译器错误失败:
E2514 Type parameter 'D' must support interface 'IMyInterface<System.Integer>'
任何指针?
【问题讨论】:
-
用分号代替逗号怎么样:
TMyClass<D; T: IMyInterface<D>>,类似于函数的参数? -
这没什么区别。此时的语法仍然可以,但变量声明中出现相同的编译器错误。
-
哦,是的,它肯定会有所作为。看我的回答。