使用webmethod传递的对象会丢失一些值,但不是全部值

本文关键字:全部 webmethod 对象 使用 | 更新日期: 2023-09-27 18:00:07

我会尽量把一切都解释清楚。

调用网络方法时

[WebMethod]
public Profile synchronize(string MID, DeviceUploadData data)

对象DeviceUploadData有许多属性,其中一些是数组的。我的问题是关于数组的。一旦在webmethod端收到它,它就会失去它的价值。

这是DeviceUploadData 内的属性

Private data() As DataObject
Public Property Data() As DataObject()
    Get
        Return Me.data
    End Get
    Set(value As DataObject())
        Me.data = value
    End Set
End Property

这是中的DataObject对象

 <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225"), _
         System.SerializableAttribute(), _
         System.Diagnostics.DebuggerStepThroughAttribute(), _
         System.ComponentModel.DesignerCategoryAttribute("code"), _
         System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://somethingsomething")> _
        Public Class DataObject
            Dim _calories As Double
            Public Property Calories() As Double
                Get
                    Return _calories
                End Get
                Set(value As Double)
                    _calories = value
                End Set
            End Property
End Class

这是webmethod端上的DeviceUploadData对象

public class DataObject
    {
        private List<DataObject> _data;
        public List<DataObject> data
        {
            get { return _data; }
            set { _data = value; }
        }
}

这是webmethod端上的DataObject

public class DataObject
    {
        #region class variables
        double _calories;
        public double Calories
        {
            get { return _calories; }
            set { _calories = value; }
        }
}

因此,DataObject填充了数据,然后一旦传递,在另一端,一些DataObject属性将不再填充。我没有在这个例子中包括其他属性。

使用webmethod传递的对象会丢失一些值,但不是全部值

解决了它!在客户端和web对象中,所有参数和方法的名称都必须完全相同。

我想在我的例子中很难看到这一点,因为我已经给它们贴上了相同的标签。

希望这能帮助到一些人。