【问题标题】:C# enumeration property null vs. 0C# 枚举属性 null vs. 0
【发布时间】:2010-10-01 22:34:24
【问题描述】:

我正在使用 IIS/asmx 来支持 Flash 客户端。我的一些服务层数据传输对象具有枚举值属性。在某些情况下,这些属性应该为空。

当将此类枚举属性的值为空的对象呈现给soap时,我收到此错误:

System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: Instance validation error: '0' is not a valid value for NameSpaceX.Model.NodeType.
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_NodeType(NodeType v)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write4_PackageDTO(String n, String ns, PackageDTO o, Boolean isNullable, Boolean needType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write15_ArrayOfPackageDTO(Object o)
   at Microsoft.Xml.Serialization.GeneratedAssembly.ListOfPackageDTOSerializer1.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o)
   at System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
   at System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
   at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
   at System.Web.Services.Protocols.WebServiceHandler.Invoke()

有没有更好的解决方案然后创建一个值为 0 的枚举成员(例如 [0, "null"]?我怀疑我在这里缺乏基础知识。

谢谢。

【问题讨论】:

    标签: c# web-services serialization enums null


    【解决方案1】:

    我的第一个想法是将您指向Nullable<T> 类型。但是,在四处寻找有关 Nullable<T> 和 SOAP 的文档后,似乎它可能不受支持。您可能想进一步探索。

    也就是说,Enums 声明 NotSet = 0 成员是很常见的。

    【讨论】:

      猜你喜欢
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多