2009-01-17 7 views
2

J'utilise IIS/asmx pour prendre en charge un client Flash. Certains de mes objets de transfert de données de couche de service ont des propriétés qui sont des valeurs d'énumération. Il y a des cas où ces propriétés devraient être nulles.Propriété d'énumération C# null par rapport à 0

Lorsqu'un objet avec une valeur nulle pour une telle propriété d'énumération est rendu à savon, je reçois cette erreur:

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() 

Est-il une meilleure solution, puis de créer un membre de l'énumération avec la valeur 0 (par exemple [ 0, « null »]? Je pense que je manque des connaissances de base ici.

Merci.

Répondre

4

Ma première inclinaison était de vous indiquer le type Nullable<T>. Cependant, après avoir regardé autour de la documentation sur un Nullable<T> sd SOAP, il semble qu'il pourrait ne pas être supporté. Vous pourriez vouloir explorer cela plus avant. Cela dit, il est très commun pour Enums de déclarer un membre NotSet = 0.

Questions connexes