I would like to query some attributes (aka annotations) in a class I'm writing.
I can do it the complex way, but I'd like to use Spring4D instead.
It has a unit called Reflection
that looks like it has what I need, but I don't know how to use it.
I've looked on the net, but there are no examples on how to use this unit.
I found:
THasAttributeFilter
Which looks like this:
THasAttributeFilter<T: TRttiObject> = class(TMemberSpecificationBase<T>)
private
fAttributeClass: TAttributeClass;
protected
function Accept(const member: T): Boolean; override;
public
constructor Create(attributeClass: TAttributeClass);
end;
Great, so I create a filter like so:
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;
I can create a HasAttributeFilter like so:
HasAttr:= THasAttributeFilter<TMyClass>.Create(CapabilitiesAttribute);
... ?? now what ??
How do I use Spring4D to test the attribute without having to write the zillions of lines that classical RTTI writing (as e.g. per Nick Hodges' book) requires?