delphi - 属性不继承?

标签 delphi attributes delphi-2010

我试过属性并假设它们是继承的,但事实并非如此:

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/

相关文章:

.net - 如何让 WinForm 设计器完全忽略自定义控件上的属性?

attributes - 是否可以将函数设置为仅在发布构建期间内联?

delphi - 帮助更好的复选框逻辑

delphi - 使用某些 RTL/VCL 或 Delphi 语言元素时如何生成警告

Delphi 整数范围的 case 语句

delphi - 变体记录的 Rtti

attributes - 如何在 XSD 中定义所需属性组?

delphi - 将相同的对象添加到 TObjectDictionary 两次会释放该对象

delphi - 整个项目的字体一致性?

c - 一个C代码的Delphi等效代码