C# WebMethod 返回列表<对象>

Posted

技术标签:

【中文标题】C# WebMethod 返回列表<对象>【英文标题】:C# WebMethod retuen List<Object> 【发布时间】:2019-03-16 05:20:18 【问题描述】:

我想在我的网络方法中返回 List,如下所示,

public List<Object> MyMethod()

List<Object> list = new List<Object>();
myClass a = new myClass();
list.Add(a);

return list;

public class myClass
public int StudetNumber get; set;
public string StudentName get; set;
public decimal average get; set;

但我收到此错误: System.InvalidOperationException : myClass 不是预期的。 System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(string name, string ns, Object o, Boolean xsiType);

返回 myClass 列表时,我没有收到错误消息。可以返回 List of System.Object 还是必须返回 List of myClass ?

感谢您的提前。

【问题讨论】:

向我们展示您的“myClass”类型 @John 我编辑了问题 我刚刚测试了您的代码,似乎工作正常...您只是缺少一个“;”在你的 myClass 类中的“set”旁边。看看这个小提琴dotnetfiddle.net/dbaro4 您的myClass 类是否使用[Serializable] 属性装饰? 您是否有机会在记事本中编码? :- 【参考方案1】:

看来我现在明白你的问题了。在 Web 方法中返回诸如“Object”或List&lt;Object&gt; 之类的泛型类型似乎不兼容,因为在 Web 方法中您将拥有 XML 定义(WSDL)并且无法定义泛型类型在那个定义中。因此,您似乎需要始终返回一个已定义的类,在您的情况下为“myClass”。

看看下面讨论这个话题的帖子,这样你会更清楚一点:

How do I return a C# web service that has a generic property?

【讨论】:

【参考方案2】:

您的类定义中缺少保留字“类” 你少了几个';'s

  public class myClass
    
        public int StudetNumber  get; set; 
        public string StudentName  get; set; 
        public decimal average  get; set; 
    

【讨论】:

嗨,谢谢你的回答,但我在手机上写了这个问题,我忘记了你难过的事情:) 通常在项目中 myClass 就像你上面写的那样。

以上是关于C# WebMethod 返回列表<对象>的主要内容,如果未能解决你的问题,请参考以下文章

使用“WebMethod”调用 C# 方法返回“未定义”

WebMethod 异步结果显示对象

将 AJAX 调用上的对象发送到 WebMethod

需要帮助 - 从 WebMethod (ASP.NET) C# 调用时,MasterPage 始终返回 null

在iframe multiview c#中的webmethod中返回html页面

如何使用 AJAX (jquery) 将嵌套的对象数组传递和接收到 c# WebMethod 中?