无法序列化,因为它没有无参数构造函数

时间:2015-09-25 23:30:43

标签: c# wcf salesforce anonymous-types

我在控制台测试应用程序中调用了一个SalesForce API作为WebReference。

它需要的参数之一是object类型。确切地说,以下是我的代码:

$('#myForm').submit(function(e){
    e.preventDefault();
    var url = $('#myform').attr('action')
    $('#myForm select, #myForm input').each(function(index, element){
        var $element = $(element);
        url += $element.attr('name') + '=' + $element.val();
        url += (('#myForm select, #myForm input').length != index ? '&' : '');
    })
    console.log(url);
});

我正在传递上面的代码,其中API期望Item的类型为 object()。

当我拨打最后一个电话时,我看到以下错误:

  

{“<> f__AnonymousType0`1 [System.Int32]无法序列化

以下是我的“添加网络参考”下载它的SFObject的定义。

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

我四处搜索,似乎WCF序列化存在一些问题,但我在这里没有使用WCf。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

对此的简短回答在于以下代码:

[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))]

部分要求它是Type String 或Type BusinessKeys 。如果发送了任何其他内容,则会因意外类型而被拒绝。如果您尝试使用 new {} 关键字欺骗系统,则会抛出刚刚抛出的错误。