Нужно ли переводить перечисляемые значения через службу WCF? - PullRequest
0 голосов
/ 16 июня 2011

Сценарий таков: я реализовал сервис WCF (назовем его X), который имеет свои собственные объекты данных.Служба X использует другую службу WCF (Y), которая имеет свой собственный набор объектов данных.Служба X должна передавать некоторые данные, которые она получает от службы Y, своим клиентам (клиентам службы X).Насколько я знаю, считается "лучшей практикой" переводить объекты, полученные от Y-сервиса, в объекты данных X-сервиса.

Какова наилучшая практика, когда речь идет о значениях Enum?Мне нужно отобразить каждое значение перечисления или есть другой способ?

1 Ответ

0 голосов
/ 16 июня 2011

Обычно идея состоит в том, чтобы изолировать пользователей вашего сервиса от изменений в вашей реализации.Поэтому вы не выставляете свои типы реализации на проводе.Представьте ситуацию, когда вы решили переименовать значение enum.Если потребитель сервиса не обновит свою реализацию, вы внесете критическое изменение, так как пользователь сервиса отправит вам старое значение enum, которое не будет десериализовано правильно.

Кроме того, вы можете обнаружить, что не все значения enum применимы к пользователям вашей службы (возможно, они используются для внутренних целей)

Так что, да, вы должны переводить значения enum так же, как и другиетипы

Если вы дадите своим перечислениям явные числовые значения, вы можете перевести их между собой, используя приведение

class Program
{
    static void Main(string[] args)
    {
        Internal i = Internal.Too;

        External e = (External) i;

        Console.WriteLine(e);
    }

}

enum Internal
{
    One = 1,
    Too = 2
}

[DataContract]
enum External
{
    [EnumMember]
    One = 1,
    [EnumMember]
    Two = 2
}

Однако вам следует быть осторожным, чтобы они не вышли из синхронизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...