У нас есть служба WCF, которая предоставляет тип «Клиент», т.е.
[DataContract(Name = "CustomerData", Namespace = "http://www.testing.com")]
public partial class Customer
{
[DataMember]
public CustomerLevel Level
{
get;
set;
}
}
Вы можете видеть, что вышеуказанный тип имеет свойство, которое является типом перечисления. Определение этого перечисления:
[IgnoreCoverage]
[DataContract(Namespace = "http://www.testing.com"")]
public enum CustomerLevel : int
{
[EnumMember(Value = "Platinum")]
Platinum = 1,
[EnumMember(Value = "Gold")]
Gold = 2,
[EnumMember(Value = "Silver")]
Silver = 3,
[EnumMember(Value = "Bronze")]
Bronze = 4,
}
Служба работает нормально, пока сервер отправляет действительное перечисление для каждого возвращаемого клиента. Однако, если служба возвращает CustomerLevel, который не определен в перечислении, время ожидания вызова службы.
Пример неверного значения CustomerLevel может быть:
customer.Level = (CustomerLevel)0;
Служба также отключается, если клиент пытается отправить неопределенное значение.
Есть ли способ разрешить прохождение неопределенного значения как клиенту, так и серверу, и позволить каждому из них самостоятельно обрабатывать неверное значение?