Как выставить перечислимые атрибуты клиенту WCF

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

Вот перечисление:

public enum TemplateType
{
    [EnumDescription("Property Particulars")]
    [EnumValue("PropertyParticulars")]        
    PropertyParticulars = 1,

    [EnumDescription("Short Format Lists")]
    [EnumValue("ShortFormatLists")]        
    ShortFormatLists,

    [EnumDescription("Client Letters")]
    [EnumValue("ClientLetters")]
    ClientLetters,

    [EnumDescription("Labels")]
    [EnumValue("Labels")]
    Labels
}

Как я могу выставить атрибуты Описания и Значения?

7
задан Jeff B 6 September 2016 в 19:06
поделиться

2 ответа

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

Вам необходимо оформить перечисление атрибутом DataContract, а значения атрибутом EnumMember , чтобы ваша информация была сериализована, но это позволит вам указать только базовое значение каждого значения перечисления, а не его описание.

8
ответ дан 6 December 2019 в 15:22
поделиться

Я не совсем разбираюсь в спецификациях, но сомневаюсь, что у такого рода метаданных есть эквивалентное представление в WSDL. Таким образом, это не будет видно на клиентской стороне, если вы сгенерируете типы в вашем прокси.

Однако, если вы поместите все ваши DataContracts в отдельную сборку, на которую вы ссылаетесь в клиенте, вы можете повторно использовать эти типы на клиентской стороне. В этом случае атрибуты будут видны. "Типы повторного использования в связанных сборках" должны быть проверены для вашей Ссылки на сервис, но по умолчанию она включена.

Здесь короткая заметка в блоге об этом. Я уверен, что есть и другие...

2
ответ дан 6 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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