Как передать перечисляемые значения веб-сервису

Вы не можете переопределить метод private. Это не видно, если вы добавили A в B. Вы можете переопределить метод protected, но это не то, что вы здесь делаете (и да, здесь, если вы переместите свой main в A, вы получите другой метод. Я бы рекомендовал @Override, когда вы намерены переопределить

class A extends B {
    @Override
    public void don() { // <-- will not compile if don is private in B.
        System.out.println("hoho public");
    }
}

. В этом случае почему компилятор не предоставил ошибку для использования t.don(), который является private?

blockquote >

Учебные пособия по Java: предопределенные типы аннотаций говорят (частично)

Хотя это не требуется для использования этой аннотации при переопределении метода, это помогает предотвращать ошибки. Если метод, отмеченный с помощью @Override, не может правильно переопределить метод в одном из своих суперклассов, компилятор генерирует ошибку.

blockquote>

21
задан Chris 23 August 2008 в 18:44
поделиться

8 ответов

Я могу только говорить о .NET, но если у Вас есть Веб-сервис ASP.net, необходимо быть в состоянии добавить перечисление непосредственно к нему.

, Когда Вы тогда используете, "Добавляют веб-Ссылка" в Вашем Клиентском приложении, получающийся Класс должен включать то перечисление

, Но это от вершины моей головы, я вполне уверен, я сделал это в прошлом, но я не могу сказать наверняка.

3
ответ дан 29 November 2019 в 21:44
поделиться

Я предложил бы против передачи целого числа между ними, просто в целях удобочитаемости и отладки. Скажите прохождение через журналов, и Вы видите набор 500 ошибок для DocumentType=4. Теперь необходимо пойти посмотреть, который DocumentType равняется 4. Или если одно из приложений относится к числу, которое не существует в другом, возможно, из-за несогласованных версий.

Это - немного больше кода, и это протирает часть статического контроля типов мозга немного сырых данных, но в протоколах сверху HTTP полученная мудрость должна принять сторону четких строк по непрозрачным перечислениям.

5
ответ дан 29 November 2019 в 21:44
поделиться

Я все еще использовал бы перечисление внутренне, но буду ожидать, что потребители передадут меня только имя, не само числовое значение.

просто некоторый глупый пример для иллюстрирования:

public enum DocumentType
{
  Invoice,
  Contract,
  WorkOrder,
  SignedWorkOrder
}

[WebMethod]
public void UploadDocument(string type, byte[] data)
{
  DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
5
ответ дан 29 November 2019 в 21:44
поделиться

При потреблении веб-сервиса от страницы/приложения.NET необходимо быть в состоянии получить доступ к перечислению после добавления веб-ссылки на проект, который использует сервис.

3
ответ дан 29 November 2019 в 21:44
поделиться

В.NET перечислимые величины (по умолчанию) сериализируются в xml с именем. Для экземпляров, где у Вас может быть несколько значений ( флаги ), тогда это помещает пространство между значениями. Это работает, потому что перечисление не содержит пробелы, таким образом, можно получить значение снова путем разделения строки (т.е. "Выставляют счет Контракту SignedWorkOrder", с помощью примера lubos).

можно управлять сериализацией значений в веб-сервисах asp.net с помощью XmlEnumAttribute, или с помощью атрибут EnumMember при использовании WCF.

3
ответ дан 29 November 2019 в 21:44
поделиться

Если Вы не работаете с.NET к.NET SOAP, можно все еще определить перечислитель, если обе конечных точки используют WSDL.

<s:simpleType name="MyEnum">    
     <s:restriction base="s:string">
          <s:enumeration value="Wow"/>
          <s:enumeration value="This"/>
          <s:enumeration value="Is"/>
          <s:enumeration value="Really"/>
          <s:enumeration value="Simple"/>
     </s:restriction>
</s:simpleType>

до WSDL-> инструмент генератора Прокси для парсинга этого в перечислимый эквивалент на клиентском языке.

3
ответ дан 29 November 2019 в 21:44
поделиться

Существуют некоторые довольно серьезные основания для того, чтобы не использовать enum с на интерфейсной границе как этот. Рассмотрите сообщение Dare на предмете.

2
ответ дан 29 November 2019 в 21:44
поделиться

Я заметил, что при использовании, "Добавляют Сервисная Ссылка" в противоположность тому, "Добавляют веб-Ссылка" с VS.net, фактические перечислимые значения сталкиваются, а также перечислимые имена. Это является действительно раздражающим, поскольку я должен поддерживать и 2,0 и 3,5 клиента. Я заканчиваю тем, что имел необходимость войти в сгенерированный код прокси веб-сервиса 2.0 и вручную добавить, что перечисление оценивает каждый раз, когда я вношу изменение!

0
ответ дан 29 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

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