我想查询我正在编写的类中的一些属性(也称为注释)。虽然我可以通过复杂的方式实现,但我想使用Spring4D来简化操作。它有一个名为“Reflection”的单元,似乎具备我需要的功能,但我不知道如何使用它。我在网上搜索过,但没有关于如何使用该单元的示例。我找到了:
很好,那我创建一个过滤器如下所示:
THasAttributeFilter
这看起来像这样:
THasAttributeFilter<T: TRttiObject> = class(TMemberSpecificationBase<T>)
private
fAttributeClass: TAttributeClass;
protected
function Accept(const member: T): Boolean; override;
public
constructor Create(attributeClass: TAttributeClass);
end;
很好,那我创建一个过滤器如下所示:
type
Capability = (CanDoA, CanDoB);
TCapabilities = set of Capability;
[Capabilities(CanDoA)]
TMyClass = class(TParent)
strict private
class var fCapabilities: TCapabilities;
....
public
property Capabilities: TCapabilities read GetCapabilities;
end;
我可以这样创建一个HasAttributeFilter:
HasAttr:= THasAttributeFilter<TMyClass>.Create(CapabilitiesAttribute);
... ?? now what ??
我该如何使用Spring4D来测试属性,而不需要编写大量的经典RTTI代码(例如Nick Hodges的书中所述)?
T
。没有人说它们“必须”以T
开头。 - Günther the Beautiful