我正在构建一个仅包含一个方法的通知侦听器 Web 服务,该方法将接收预定义的对象作为该方法的唯一参数。我有一个对发送方 API 的服务引用,其中定义了该对象及其组件对象,并且在服务引用的自动生成代码中,大多数或所有对象都实现了 System.ComponentModel.INotifyPropertyChanged。因此,每个人都有一个 PropertyChanged 成员,它显示在我的 WSDL 中,如下所示:
<xs:complexType name="DocuSignEnvelopeInformation">
<xs:sequence>
<xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/System.ComponentModel" name="PropertyChanged" nillable="true" type="q1:PropertyChangedEventHandler"/>
...
</xs:sequence>
</xs:complexType>
我不知道为什么这些对象需要实现 INotifyPropertyChanged,而调用我的侦听器服务的通知服务永远不会发送此 PropertyChanged 元素,这应该没问题,因为 PropertyChanged 具有属性 nillable="true"。但是由于某种原因,每次都会抛出一个错误,表明它必须具有 PropertyChanged 属性:“格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数时出错http://schemas.datacontract.org /2004/07/MyNamespace:DocuSignEnvelopeInformation。InnerException消息是“第 5 行位置 2162 中的错误。命名空间中的“EndElement”“DocuSignEnvelopeInformation”“ http://schemas.datacontract.org/2004/07/MyNamespace' 不是预期的。期待元素'PropertyChanged'。'。有关详细信息,请参阅 InnerException。”
如果它被标记为 nillable,为什么它期望元素“PropertyChanged”?从我正在阅读的内容来看,nillable 意味着该属性在 xml 中是可选的。这不是真的吗?