Dado el siguiente fragmento de código:TCustomAttribute - "expresión constante espera" Error de compilación
type
MyIntf = interface
['{C6184693-663E-419F-B2DA-4DA1A0E33417}']
procedure Foo;
end;
InvisiblePropInterfaces = class(TCustomAttribute)
private
FGUIDS: array of TGUID;
public
constructor Create(const GUIDS: array of TGUID);
end;
[InvisiblePropInterfaces([MyIntf])] // <-- Constant expression expected error
TMyClass = class(TInterfacedObject, MyIntf)
procedure Foo;
end;
¿Por qué el compilador que esto no es una expresión constante? Pero dado que uso InvisiblePropInterfaces como este, ¿el compilador está feliz?
...
var
I: InvisiblePropInterfaces;
begin
I:= InvisiblePropInterfaces.Create([MyIntf]);
...
parece que no he tenido suerte con mi primer uso real de los atributos. Bueno, entonces tengo que cambiar mi diseño y simplemente decorar mis clases con otra interfaz, algo así como: IInvisiblePropInterfaces = función de interfaz GetGuids: array of TGuid – iamjoosy