WCF - конвертировать пустой элемент в нуль-нативный тип
Оставление пустым элемента поля SOAP приводит к ошибке приведения для собственных типов. (к сожалению, не могу использовать xsi: nil = "правда" из-за ограничений клиента)
Пометка собственного типа контракта WCF как обнуляемого <> кажется недостаточно, чтобы остановить следующую ошибку, возвращаемую клиенту.
Строка '' не является допустимым логическим значением. в System.Xml.XmlConvert.ToBoolean (String s) в System.Xml.XmlConverter.ToBoolean (String value) System.FormatException
Кто-нибудь знает лучший метод инструктирования DataContractSerializer для преобразования пустых элементов для десериализации в нуль?
Мой пример контракта на обслуживание WCF;
[ServiceContract()]
public interface IMyTest
{
[OperationContract]
string TestOperation(TestRequest request);
}
[ServiceBehavior()]
public class Settings : IMyTest
{
public string TestOperation(TestRequest request)
{
if (request.TestDetail.TestBool.HasValue)
return "Bool was specified";
else
return "Bool was null";
}
}
[DataContract()]
public class TestRequest
{
[DataMember(IsRequired = true)]
public int ID { get; set; }
[DataMember(IsRequired = true)]
public TestDetail TestDetail { get; set; }
}
[DataContract()]
public class TestDetail
{
[DataMember()]
public bool? TestBool { get; set; }
}
Как мы можем заставить WCF принять следующую заявку;
1
Клиент может только изменить значение, которое он вставляет{here}
так что правда ложь или ничего - единственные варианты.