2

Flash クライアントをサポートするために IIS/asmx を使用しています。一部のサービス レイヤー データ転送オブジェクトには、列挙値であるプロパティがあります。これらのプロパティを null にする必要がある場合があります。

このような列挙型プロパティの null 値を持つオブジェクトが 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"] など) の列挙メンバーを作成するよりも良い解決策はありますか? ここで基本的な知識が不足していると思われます。

ありがとう。

4

1 に答える 1

4

私の最初の傾向は、あなたにNullable<T>タイプを指摘することでした. ただし、SOAP に関するドキュメントを調べたところ、Nullable<T>サポートされていないようです。これをさらに調査することをお勧めします。

とはいえ、Enum がメンバーを宣言することは非常に一般的ですNotSet = 0

于 2009-01-17T00:53:28.550 に答える