Динамически создавать класс, который макетирует другой класс (например, remotingProxy) в haxe - PullRequest
2 голосов
/ 07 января 2011

Я хочу иметь возможность динамически создавать новый класс, который имеет все методы другого класса. В частности, я хочу сделать свой собственный вид удаленного прокси. класс ApiProxy расширяет haxe.remoting.Proxy {} Новый класс ApiProxy будет иметь все те же имена методов и сигнатуры, что и Api, и будет проверяться во время компиляции. Только каждый вызов выполняется по проводам, а не обрабатывается локально.

Я думаю, что remoting.Proxy - это магический внутренний класс - это правда? Имеют ли обычные пользователи возможность определять класс, который является столь же статичным, как этот? Я никогда не видел, чтобы это было сделано в Java, и я впечатлен его возможностями в Haxe.

Как бы я реализовал свой собственный класс, такой как remoting.Proxy?

Ответы [ 2 ]

1 голос
/ 21 января 2011

вы можете достичь этого с помощью макросов

взгляните на этот пост, чтобы понять:

http://haxe.1354130.n2.nabble.com/Macros-Are-Awesome-tc5945711.html

Вы можете писать, сохранять в файловой системе и регистрироваться.новый класс внутри макроса, основанный на информации о типе, которая была передана функции.

1 голос
/ 09 января 2011

haxe.remoting.Proxy действительно "магический", он описан таким образом в исходных комментариях: http://code.google.com/p/haxe/source/browse/trunk/std/haxe/remoting/Proxy.hx?r=3592

Нельзя копировать с "нормальным" хак-кодом.Добавление / изменение функциональности haxe.remoting.Proxy для вашего собственного класса будет трудным, но, возможно, не невозможным.Обратитесь к руководству для «эквивалентного» кода реализации API: http://haxe.org/doc/remoting/proxy

Однако что-то подобное возможно с макросами: http://haxe.org/manual/macros

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

удачи!

...