Обычно идея состоит в том, чтобы изолировать пользователей вашего сервиса от изменений в вашей реализации.Поэтому вы не выставляете свои типы реализации на проводе.Представьте ситуацию, когда вы решили переименовать значение 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
}
Однако вам следует быть осторожным, чтобы они не вышли из синхронизации