Как избавиться от этого предупреждения компилятора?

У меня есть несколько классов (из 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? Это может объяснить ошибку.

Обновление: Сертак подтверждает в комментарии, что это действительно так.

person David Heffernan    schedule 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