статические константы возвращают экземпляр определенного класса во Flex? - PullRequest
0 голосов
/ 29 апреля 2010

Так вот что я имею в виду. Допустим, у меня есть класс ErrorMessages, который содержит все мои сообщения об ошибках в качестве статических констант. Поэтому я мог получить к ним доступ, например, ErrorMessages.PASSWORD_INVALID или ErrorMessage.PASSWORD_TOO_SHORT. Я хочу знать, возможно ли иметь отдельные классы, которые содержат подмножество этих констант и получить к ним доступ, например ErrorMessages.PASSWORD.INVALID или ErrorMessages.PASSWORD.TOO_SHORT и т. Д. Таким образом, я могу получить более структурированную статическую структуру и значительно упростить использование автозаполнения. Я пробовал несколько разных способов и не мог понять, возможно ли это ...

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Объявите их как const-объекты в статическом классе - вы не получите их в автозаполнении.

public class ErrorMessages
{
  public static const PASSWORD:Object = {
     INVALID:"invalid password",
     TOO_SHORT:"minimum 6 chars required",
     TOO_LONG:"100 chars: r u sure?"
  };
  public static const FILE:Object = {
     NOT_FOUND:"No such file",
     READ_ONLY:"it is readonly",
     SOMETHING_ELSE:"something else"
  };
}

trace(ErrorMessages.PASSWORD.INVALID);

Если важно автозаполнение, создайте выделенный пакет com.domain.errors и объявите разные классы для разных категорий ошибок (например, ПАРОЛЬ, ФАЙЛ и т. Д.) В этом пакете. Теперь объявите открытые статические константы внутри этих классов соответствующим образом.

0 голосов
/ 29 апреля 2010

Вот что я в итоге делаю

package com.domain.data.type {
  public class ErrorMessages {
    public static function get PASSWORD:PasswordErrorMessages { return new PasswordErrorMessages(); }
    }
}
class PasswordErrorMessages {
  public function get INVALID():String  { return "invalid password"; }
}

Таким образом, я могу получить желаемое поведение: ErrorMessages.PASSWORD.INVALID с автозаполнением. Это не так чисто, как хотелось бы ... но я думаю, это подойдет.

0 голосов
/ 29 апреля 2010

или, если вы хотите сохранить один класс, вы можете определить классы внутри своего класса Error. Возможно, вы захотите получить этот текст из файла свойств. Таким образом, вы можете использовать экземпляр resourceManager и получить текст из определенного пакета ресурсов.

- http://riageeks.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...