Генерация WSDL при использовании собственного класса SOAP PHP?

Просто добавление к исходному ответу. Хотя это будет работать:

MethodInfo method = typeof(Sample).GetMethod("GenericMethod");
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);

Также немного опасно, что вы теряете проверку времени компиляции для GenericMethod. Если вы позже выполните рефакторинг и переименуете GenericMethod, этот код не заметит и не будет работать во время выполнения. Кроме того, если есть какая-либо пост-обработка сборки (например, обфускация или удаление неиспользуемых методов / классов), этот код также может сломаться.

Итак, если вы знаете метод, с которым вы связываетесь во время компиляции , и это не называется миллионы раз, поэтому накладные расходы не имеют значения, я бы изменил этот код:

Action<> GenMethod = GenericMethod<int>;  //change int by any base type 
                                          //accepted by GenericMethod
MethodInfo method = this.GetType().GetMethod(GenMethod.Method.Name);
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);

Хотя вы не очень красивы, у вас есть ссылка времени компиляции на GenericMethod здесь, и если вы рефакторируете, удаляете или делаете что-либо с помощью GenericMethod, этот код будет продолжать работать или, по крайней мере, ломаться во время компиляции (если, например, вы удалите GenericMethod).

Другой способ сделать то же самое - создать новый класс-оболочку и создать его через Activator. Я не знаю, есть ли лучший способ.

18
задан 20 February 2009 в 09:40
поделиться

1 ответ

Генерация WSDL на лету не является чем-то, что происходит очень часто - она имела бы тенденцию поднимать несколько вопросов об устойчивости Вашего сервиса!

Studio Зенда может генерировать WSDL от класса PHP, и существует несколько других подобных инструментов.

, Если действительно необходимо генерировать WSDL динамично, смотрите на библиотеку Zend Framework: Zend_Soap_AutoDiscover

3
ответ дан 30 November 2019 в 09:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: