Ссылка на класс как свойство

Google бесполезен для такого рода поисков, потому что вы получаете сотни миллионов результатов, абсолютно ни один из которых не относится к конкретному вопросу.

Вопрос просто таков:

  • Возможно ли иметь свойство ссылки на класс в Delphi?
  • Если да, то как?

Вот что я пробовал ...

type

  TMyObject = class
    // ...
  end;

  TMyObjectClass = class of TMyObject

  TMyObjectA = class(TMyObject)
    // specifics here
  end;

  TMyObjectB  =class(TMyObject)
    // specifics here
  end;

  TMyComponent = class(TComponent)
  private
    FObjectType: TMyObjectClass;
  published
    property ObjectType: TMyObjectClass read FObjectType write FObjectType;
  end;

Приведенный выше код компилируется нормально, однако инспектор объектов вообще не отображает свойство ObjectType .

Моя цель (если вы еще не догадались) состоит в том, чтобы сделать так, чтобы я мог выбирать потомка класса из определенного базового класса, чтобы тот же компонент вел себя по-другому.

Я хочу сделать это таким образом, чтобы компоненту не нужно было знать о подклассах напрямую ( он должен быть полностью модульным ).

Позвольте мне прояснить этот бит: Я не могу использовать Enum для выбора между типами подкласса, поскольку компонент не может напрямую связываться с типами подкласса ( Это просто невозможно в данном конкретном случае )

В любом случае ... заранее спасибо!

7
задан LaKraven 28 January 2012 в 16:21
поделиться