Нет, вышеупомянутый макрос нельзя преобразовать в функцию ceil in-kernel, так как в ядре такой функции нет. Хотя, если внимательно посмотреть вышеупомянутый макрос, то есть
#define CEIL(a, b) (((a) + (b-1)) / (b))
Вышеприведенная функция является альтернативой для функции DIV_ROUND_UP в ядре. Таким образом, можно опустить макрос в ядре и использовать функцию DIV_ROUND_UP в функции вызова.
Это верно, если a и b оба являются целыми числами.
таким образом, я могу только предположить, что.NET (или по крайней мере wsdl.exe) не позволяет Вам использовать веб-сервис, который возвращает сложные (пользовательские) типы того же типа через несколько методов... правильно?
Это неправильно. Вообразите, сколько из боли, которая была бы, если бы это было верно - у Вас мог бы только когда-либо быть один метод, который возвращает Строку, та, которая возвращает Двойное, то, которое возвращает SomeObject, и т.д...., это был бы кошмар.
Я не очень знаком с веб-сервисами в.NET, но от ошибок Вы добираетесь, она кажется, что у Вас есть проблемы с пространствами имен XML - возможно, существует коллизия имени. Я попытался бы следовать за предложением в сообщении об ошибке, изменить WebMethodAttribute
.
Также, кроме того, если Вы не можете отправить часть кода/документа, связанного с проблемой, Вы имеете из-за некоторых проблем конфиденциальности/чувствительности компании, необходимо отправить санированную версию, которая все еще доказывает тестовый сценарий. Почти что-либо "чувствительное" должно смочь быть сведенным к намного большему количеству более простого отрывка кода, который все еще убедительно излагает свою точку зрения, не предавая чувствительности.
Очень странно. Обычно WSDL обеспечил бы общий тип, и при компиляции через wsdl.exe или svcutil.exe Вы заставите общий, общий тип использовать через любое количество методов в том же интерфейсе.
Были проблемы при ссылке на несколько независимый WSDL в том же приложении, та доля, якобы идентичный тип, который приводит к двум отличным CLR, вводит быть сгенерированным. Существуют пути вокруг этой проблемы - она довольно хорошо известна. Затем существует несколько связанная проблема отображения существующего бизнес-объекта к типу, сгенерированному от WSDL. Другая ранее исследуемая среда.
Но Вы говорите о чем-то другом.
Я просто искал «ссылки на метод и тип» и нашел отчет об ошибке подключения » System.InvalidOperationException: элемент XML * из пространства имен * ссылается на ссылку на метод и тип ». В этом случае есть операция и элемент с одним и тем же именем (локальное имя и пространство имен).
It ' Стоит отметить часть ответа Microsoft:
Мы больше не вносим усовершенствования в ASMX; мы продолжаем поддерживать его существующую функциональность, но по возможности рекомендуем использовать WCF.
Использование WSDL.exe имеет переключатель / sharetypes . Это должно решить эту проблему.
Более того, я бы не согласился, что это дело Microsoft, поскольку одни и те же классы представлены как разные сложные типы, находящиеся в нескольких wsdl. Это не очень хорошая абстрактная конструкция.
Готовая справочная документация Microsoft для общих типов Включает функцию обмена типами. Эта функция создает один файл кода с определением одного типа для идентичных типов, совместно используемых разными службами (пространство имен, имя и подпись провода должны быть идентичными). Ссылайтесь на сервисы с http: // URL-адресами в качестве параметров командной строки или создайте дисковый документ для локальных файлов.
Я столкнулся с аналогичной проблемой, и вот что я обнаружил:
Я определил сложный тип для возврата в качестве ответа:
public class FooResponse {...}
[WebMethod]
public FooResponse Foo() {...}
Обратите внимание, что здесь точное сочетание имен Foo / Foo + Response важен. Когда я изменил имя метода следующим образом, проблема исчезла:
public class FooResponse {...}
[WebMethod]
public FooResponse Fooxxx() {...}
Я считаю, что происходит то, что .NET пытается автоматически обернуть ответ, исходящий от метода Foo, элементом с именем FooResponse. Использование того же имени в качестве объекта, который вы хотите вернуть, создает двусмысленность. Попробуйте изменить имя вашего объекта ответа или имя вашего метода, чтобы избежать этой коллизии.