我试过属性并假设它们是继承的,但事实并非如此:
type
[MyAttribute]
TClass1 = class
end;
TClass2 = class(TClass1)
end;
虽然 TClass2 继承自 Class1,但它没有属性“MyAttribute”。是否有可能使属性可继承?或者我是否必须在类层次结构中向上搜索属性?
最佳答案
属性是类或其他符号(例如方法)的装饰。属性修饰声明,但不是类的特征。因此,属性不会被继承。
是的,您可以在类层次结构中向上查找属性,但还有更好的解决方案。使用空接口(interface) (IMyInterface = Interface) 作为“标记”接口(interface)。接口(interface)实现类的所有后代也将是该接口(interface)的实现者。您需要确保的是您的基类实现了 IInterface,如果您的基类是从 TInterfacedObject 或 TComponent 派生出来的,就已经是这种情况了。
完成此操作后,您可以使用 Supports 函数来测试该类或其祖先之一是否实现了该接口(interface)。
关于delphi - 属性不继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698140/