Delphi Prism, как объявить постоянный ограниченный массив перечислений

Я получаю ошибку компиляции

[Ошибка 1 (PE114) Тип "array[0..1] of ConsoleApplication.MyEnum" используется из типа "ConsoleApplication". должен быть общедоступным D:\PrismProjects\ConsoleApplication\ConsoleApplication\Program.pas 14 42 ConsoleApplication]

когда я пытаюсь скомпилировать следующий код:

namespace ConsoleApplication;

interface

type
  ConsoleApp = class
    public
      class method Main(args: array of string);
  end;

  MyEnum = (F, T);

const
  EnumOfBool: array[boolean] of MyEnum = [MyEnum.F, MyEnum.T];

implementation

  class method ConsoleApp.Main(args: array of string);
  begin
    Console.WriteLine('Hello World.');
  end;
end.

1 ответ

Где определяется MyEnum? Я почти уверен, что где бы то ни было, он не помечается как публичный (как следует из сообщения об ошибке), но он остается на видимости по умолчанию (которая является закрытой в.NET).

Тогда RRUZ прав в своем комментарии, вам следует избегать глобальных деклараций. Компилятору Oxygene необходимо создать (невидимый, автоматически сгенерированный) класс, содержащий его как статический член (класс) в любом случае, потому что.NET не допускает глобальных объявлений, поэтому вы должны сделать это "правильно" в первую очередь.

Другие вопросы по тегам