TCustomAttribute - Ошибка компиляции «Ожидается постоянное выражение»

Учитывая следующий фрагмент кода:

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;

Почему компилятор считает, что это не постоянное выражение? Но, учитывая, что я использую InvisiblePropInterfaces, как этот, компилятор просто доволен?

...
var
  I: InvisiblePropInterfaces;
begin
  I:= InvisiblePropInterfaces.Create([MyIntf]);
...
6
задан iamjoosy 23 January 2012 в 18:09
поделиться