Как да се отърва от това предупреждение на компилатора?

Имам няколко класа (от TObject) в Delphi XE7 (Firemonkey), които имат свойство AsJson:

uses
  System.Classes, System.SysUtils, XSuperObject;

type
  TMyObject = class(TObject)
  public
    property AsJson: ISuperObject read GetAsJson;
  end;

Компилаторът обаче ми дава предупреждения за тези:

[dcc32 Warning] MyUnit.pas(383): W1009 Redeclaration of 'AsJson' hides a member in the base class

Гледам в базовия клас на TObject и не виждам такова нещо, нито е валидно поле, ако се опитам да го използвам. Не виждам нищо в документацията за такъв имот. Изглежда, че това се случва само ако типът свойство е ISuperObject, което е най-новата версия на XSuperObject (от SVN поне преди няколко седмици). Опитах също да използвам тип Integer и също го разбирам.

Какво означава това предупреждение в моя сценарий и как да се отърва от него?

РЕДАКТИРАНЕ

Изглежда, че се случва само когато имам XSuperObject в клаузата за използване...

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  XSuperObject in 'C:\...\XSuperObject.pas',
  XSuperJSON in 'C:\...\XSuperJSON.pas';

type
  TMyObject = class(TObject)
  private
    FTest: Integer;
  public
    property AsJson: Integer read FTest;
  end;

begin

end.

Горният пример произвежда:

[dcc32 Warning] Project1.dpr(17): W1009 Redeclaration of 'AsJson' hides a member in the base class

Ако просто премахна XSuperObject, не получавам това предупреждение. Моето копие на XSuperObject е на няколко седмици.


person Jerry Dodge    schedule 28.12.2014    source източник
comment
Ако получите това предупреждение за код, който е толкова прост, колкото това, което показвате тук (аз не го правя), тогава това ми изглежда като грешка в компилатора (като например, някаква вътрешна таблица на компилатора е повредена). Получавате ли това предупреждение и в иначе празен проект?   -  person 500 - Internal Server Error    schedule 28.12.2014
comment
Кодът във въпроса не може да даде тази грешка, ако приемем, че TObject е това, което бихме очаквали да бъде. Покажете пълна програма.   -  person David Heffernan    schedule 28.12.2014
comment
Вашата редакция е странна. Казахте, че сте произлезли от TObject. Ти ли?   -  person David Heffernan    schedule 28.12.2014
comment
@DavidHeffernan Да, но това се случва от всеки базов клас. Просто го направих, за да го запазя минимално.   -  person Jerry Dodge    schedule 28.12.2014
comment
Защо има хора, които все още гласуват за затваряне, тъй като вече не могат да възпроизвеждат, когато е ясно, че може да бъде? Приет отговор с причината и всичко...   -  person Jerry Dodge    schedule 28.12.2014


Отговори (2)


Възможно ли е XSuperObject да декларира помощен клас за TObject това въвежда свойство AsJSON? Това може да обясни грешката.

Актуализация: Sertac потвърждава в коментар, че това наистина е така.

person David Heffernan    schedule 28.12.2014
comment
Добро предположение: ред 347 - person Sertac Akyuz; 28.12.2014
comment
Благодаря, никога не съм предполагал, че такова нещо е възможно. - person Jerry Dodge; 28.12.2014

Следващият код също задейства такова предупреждение. Подозирам, че имате TObject клас предеклариран някъде.

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
  ISuperObject = interface
  end;

  TObject = class
  public
    function AsJSON: string; virtual;
  end;

  TMyObject = class(TObject)
  public
    function GetAsJson: ISuperObject;
    property AsJson: ISuperObject read GetAsJson;
  end;

function TObject.AsJSON: string;
begin

end;

function TMyObject.GetAsJson: ISuperObject;
begin

end;

begin
end.
person Dalija Prasnikar    schedule 28.12.2014
comment
Моля, вижте моята редакция. Изглежда, че XSuperObject прави нещо. - person Jerry Dodge; 28.12.2014
comment
Вашият отговор не може да е валиден, защото създавате своя собствена ISuperObject вместо да използвате действителната XSuperObject библиотека. Освен това отговорът не може да се основава на подозрение. Отговорите на Stack Overflow трябва да се основават на факти. Подозрението е много близко до мнението. - person Jerry Dodge; 28.12.2014
comment
@Jerry Отговорът, който приехте, се основаваше на подозрение. Просто случайно имах щастливо предположение. - person David Heffernan; 28.12.2014
comment
@David Не видях това като подозрение, мислех, че знаеш със сигурност, че XSuperObject има такова нещо :-) - person Jerry Dodge; 28.12.2014
comment
В първоначалния си въпрос имахте три и половина реда код и всичко, което можех да направя, е да направя обосновано предположение какво може да се случи. Разбира се, предположението ми беше грешно и @David направи много по-добро. - person Dalija Prasnikar; 29.12.2014