2015-09-25 1 views
0

J'appelle une API SalesForce ajoutée en tant que WebReference dans mon application de test de console.ne peut pas être sérialisé car il n'a pas de constructeur sans paramètre

l'un des paramètres dont il a besoin est de type objet. Pour être précis, suivant mon code:

SFObject sfObject = new SFObject 
      { 
       type = "User", 
       Item = new { ExternalId = 2} 
      }; 

Je passe le code ci-dessus où API attend d'être objet type de l'article().

Quand je fais le dernier appel, je vois l'erreur suivante:

{"<>f__AnonymousType0`1[System.Int32] cannot be serialized

est Ci-dessous la définition de sfObjet mon « Ajouter une référence Web » téléchargé.

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.81.0")] 
    [System.SerializableAttribute()] 
    [System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.ComponentModel.DesignerCategoryAttribute("code")] 
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:sfobject.sfapi.successfactors.com")] 
    public partial class SFObject { 

     private object itemField; 

     private string typeField; 

     private System.Xml.XmlElement[] anyField; 

     /// <remarks/> 
     [System.Xml.Serialization.XmlElementAttribute("businessKeys", typeof(BusinessKeys))] 
     [System.Xml.Serialization.XmlElementAttribute("id", typeof(string))] 
     public object Item { 
      get { 
       return this.itemField; 
      } 
      set { 
       this.itemField = value; 
      } 
     } 

     /// <remarks/> 
     public string type { 
      get { 
       return this.typeField; 
      } 
      set { 
       this.typeField = value; 
      } 
     } 

     /// <remarks/> 
     [System.Xml.Serialization.XmlAnyElementAttribute()] 
     public System.Xml.XmlElement[] Any { 
      get { 
       return this.anyField; 
      } 
      set { 
       this.anyField = value; 
      } 
     } 
    } 

Je cherchai autour et semble comme il y a un problème avec la sérialisation WCF, mais je ne l'utilise WCF ici. Est-il possible que je puisse contourner ce problème?

+0

S'il vous plaît Metion SFObject classe et ces propriétés et toutes les choses qui lui sont pertinentes. –

+0

@vahidkargar: vient d'ajouter l'info – TeaLeave

+0

Qu'est-ce qui n'est pas clair à propos de l'erreur? Les types anonymes ne peuvent pas être sérialisés. –

Répondre

1

Eh bien la réponse courte à cela réside dans la pièce folloing du code:

[System.Xml.Serialization.XmlElementAttribute("businessKeys", typeof(BusinessKeys))] 
     [System.Xml.Serialization.XmlElementAttribute("id", typeof(string))] 
     public object Item { 
      get { 
       return this.itemField; 
      } 
      set { 
       this.itemField = value; 
      } 
     } 

[System.Xml.Serialization.XmlElementAttribute("businessKeys", typeof(BusinessKeys))] 
      [System.Xml.Serialization.XmlElementAttribute("id", typeof(string))] 

partie demande à être soit de type chaîne ou de type BusinessKeys. Si quelque chose d'autre est envoyé, il sera rejeté comme un type inattendu. Si vous essayez de tromper le système avec nouveau {} mot-clé alors il va lancer l'erreur qu'il vient de lancer.