Предоставление атрибута Description Enums из службы WCF - PullRequest
2 голосов
/ 12 февраля 2009

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

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

Ответы [ 3 ]

1 голос
/ 12 февраля 2009

Вы не можете форсировать это - дескрипторы mex / WDSL содержат только крошечное подмножество информации, связанной с типом.

Если вы управляете клиентом, один из вариантов - объявить enum (или даже все типы) локально и использовать его оттуда. Вы должны иметь возможность использовать переключатель svcutil / reference: для использования типов из существующей сборки (IDE предлагает то же самое). Но учтите, что это частично нарушает правила SOA (т. Е. Вы используете больше информации, чем обещает контракт на обслуживание).

0 голосов
/ 12 февраля 2009

Проверьте атрибут XmlEnum . Это позволит вам указать «Имя» атрибута xml. Например:

public enum MyEnum
{
    [XmlEnum("Coolbox")]
    Esky,
    [XmlEnum("Sandles")]
    Thong,
    [XmlEnum("MoreLikeGridironThanRealFootball")]
    Footy,
}
0 голосов
/ 12 февраля 2009

вы можете сделать это с помощью отражения. вернитесь в клиент после того, как у вас будет значение Enum .. попробуйте подобрать атрибут с помощью GetField () & GetCustomAttributes ()

using System;
using System.Reflection;
using System.ComponentModel;

namespace CustomAttributes
{
    class Program
    {
        static void Main(string[] args)
        {
            Colors n1 = Colors.blue;

            object [] attribues = n1.GetType().GetField(n1.ToString()).GetCustomAttributes(true);
            Console.WriteLine((attribues[0] as DescriptionAttribute).Description);
            // WOULD PRINT  "DARK BLUE"
        }
    }

    enum Colors
    {
        [Description("DARK BLUE")]
        blue,
        [Description("PLAIN WHITE")]
        white
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...