Вложенные атрибуты в Delphi - PullRequest
3 голосов
/ 24 августа 2011

Есть ли способ использовать вложенные атрибуты в Delphi?На данный момент я использую Delphi XE.

Например:

TCompoundAttribute = class (TCustomAttribute)
public
  constructor Create (A1, A2 : TCustomAttribute)
end;

И использование будет

[ TCompoundAttribute (TSomeAttribute ('foo'), TOtherAttribute ('bar')) ]

На данный момент это приводит к внутреннейошибка.Это было бы хорошей возможностью для создания некоторых логических выражений для атрибутов.

1 Ответ

0 голосов
/ 11 сентября 2012

Я думаю, вы имеете в виду атрибуты по умолчанию метода создания.

Как-то так должно работать:

unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFoo = class
  private
    FA1: string;
    FA2: string;
    { Private declarations }
  public
    procedure Show;
    constructor Create (a1: string = 'foo'; a2: string = 'bar');
  end;

var
  o : Tfoo;

implementation

{$R *.dfm}

procedure Tfoo.show;
begin
  ShowMessage(FA1 + ' ' + FA2);
end;

constructor Tfoo.create (a1: string = 'foo'; a2: string = 'bar');
begin
  FA1 := a1;
  FA2 := a2;
end;


begin
  o := Tfoo.create;
  o.show;   //will show 'foo bar'
  o.Free;

  o := Tfoo.create('123');
  o.show;   //will show '123 bar'
  o.Free;

  o := Tfoo.create('123', '456');
  o.show;   //will show '123 456'
  o.Free;

  //etc..
end.
...