2009-10-21 3 views
0

Как видно из названия, почему используются методы applyResult и applyFaultAsyncTokenmx_internal?ActionScript/Flex: Почему применяются методы {Fault, Result} для AsyncToken?

Было несколько раз, что я хотел бы использовать AsyncToken в своем коде, но в итоге я переписал его, потому что я не хочу принуждать клиентов к use namespace mx_internal.

ответ

1

Ну, как указано где-то в liveocs (я думаю) mx_internal используется для обозначения вещей в рамках, которые могут меняться со временем (видимо, они думали, что C# и Java делают это неправильно с устаревшим материалом). Что касается точной причины, почему эти конкретные методы отмечены mx_internal, то только разработчик, который их отметил, знает. Вероятно, они встретились в один прекрасный день, чтобы обсудить это, и это произошло примерно так: «Эй, какой доступ мы хотим для этих методов» «Я не знаю, хотим ли мы, чтобы они были сверхъестественными?» «Не уверен» «Хорошо, давайте сделаем их mx_internal». Было много случаев, когда методы, которые должны были быть отмечены защищенными, были отмечены mx_internal (или частные, что в некоторых случаях еще хуже), и это одна из самых неприятных вещей в flex framework.

Кроме того, вы используете пространство имен mx_internal, хотите ли вы этого или нет, потому что большинство компонентов в структуре импортирует его, поэтому, если вы используете компоненты фрейма, ваша сборка уже включает в себя.

+0

Спасибо за ответ. Я рад узнать, что я не одинок, чувствуя, что модификаторы доступа Flex сумасшедшие. Кроме того, это не значит, что я не хочу загружать пространство имен 'mx_internal' ... Я просто не хочу заставить конечных пользователей моей библиотеки« импортировать mx.core.mx_internal; используйте пространство имен mx_internal' каждый раз, когда они хотят отправить мой код «AsyncToken» (я об этом обошел, переписав «AsyncToken», назвав его «DeferredResult»). –

4

Если вы построили этот класс, вы хотите скрыть функциональность от обычных пользователей, так как вы не хотите, чтобы они ошибочно вызывали методы, но внутренние классы, которые их создают, должны вызывать их, поэтому маркировка их, как mx_internal, имеет смысл.

+0

Имеет смысл * если * класс * не предназначен для использования * обычными пользователями. Но, кроме того, что методы 'apply' являются' mx_internal', нет никаких указаний на то, что это так. Что произойдет, если я хочу написать метод, который возвращает 'AsyncToken'? –