WCF - конвертировать пустой элемент в нуль-нативный тип

Оставление пустым элемента поля SOAP приводит к ошибке приведения для собственных типов. (к сожалению, не может использовать xsi: nil = "true" из-за ограничений клиента)

Пометка собственного типа контракта WCF как nullable <>, по-видимому, недостаточна, чтобы остановить следующую ошибку, возвращаемую клиенту.

Строка '' не является допустимым логическим значением. в 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 принять следующую заявку;

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ster="mynamespace">
   <soapenv:Header/>
   <soapenv:Body>
      <ster:TestOperation>
         <ster:request>
            <ster:ID>1</ster:ID>
            <ster:TestDetail>
               <ster:TestBool></ster:TestBool>
            </ster:TestDetail>
         </ster:request>
      </ster:TestOperation>
   </soapenv:Body>
</soapenv:Envelope>

Клиент может только изменить значение, которое он вставляет<ster:TestBool>{here}</ster:TestBool> так что правда ложь или ничего - единственные варианты.

Ответы на вопрос(1)

Ваш ответ на вопрос