E2506 Метод параметризованного типа, объявленный в интерфейсной секции, не должен использовать локальный символ

может кто-нибудь объяснить мне в чем причина, что при создании общего класса я должен перемещать свои приватные константы в раздел интерфейса? Это убивает мой дизайн, я не хочу, чтобы другие видели то, что должно быть приватным.

unit Unit38;

interface

uses
  Generics.Collections;

type
  TSimpleClass<T> = class(TObject)
  private
    procedure DoSomethingInternal(const SomeString: string);
  public
    procedure DoSomething;
  end;

implementation

const
  MyString = 'some string'; //Why this must be public?

{ TSimpleClass<T> }

procedure TSimpleClass<T>.DoSomething;
begin
  DoSomethingInternal(MyString); //Compiler error
end;

procedure TSimpleClass<T>.DoSomethingInternal(const SomeString: string);
begin
  //-------
end;

end.

Спасибо.

11
задан Wodzu 26 October 2011 в 06:16
поделиться