Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ASMX Web服务-返回具有属性的用户定义类_Asp.net_Web Services_Asmx_User Defined Types - Fatal编程技术网

Asp.net ASMX Web服务-返回具有属性的用户定义类

Asp.net ASMX Web服务-返回具有属性的用户定义类,asp.net,web-services,asmx,user-defined-types,Asp.net,Web Services,Asmx,User Defined Types,哎,, 我试图从web方法返回用户定义的类。该类具有属性和/或方法。 给定以下web方法: [WebMethod] public List<MenuItem> GetMenu() { List<MenuItem> menuItemList = new List<MenuItem>(); menuItemList.Add(new MenuItem()); menuItemList.Add(new MenuItem())

哎,, 我试图从web方法返回用户定义的类。该类具有属性和/或方法。 给定以下web方法:

[WebMethod]  
public List<MenuItem> GetMenu()  
{  
    List<MenuItem> menuItemList = new List<MenuItem>();  
    menuItemList.Add(new MenuItem());  
    menuItemList.Add(new MenuItem());  
    menuItemList.Add(new MenuItem());  
    return menuItemList;  
}

只有当类是可序列化的(通常意味着公共字段和属性)时,它才会起作用,这就是为什么MenuItem会失败的原因,因为
客户端不知道如何正确构造MenuItem类

试试这个:

[Serializable]
public class MenuItem
{
   private string name;

   public MenuItem()
   {
      name = "pizza";
   }

   public string Name
   {
      get {
         return name;
      }
      set {
         name = value;
      }
   }

}
  • 如果我没记错的话,私有属性不会发送给客户端
  • 无法在客户端上生成方法。在服务器上使用某些资源的方法是什么? 2a。为了解决这个问题,您可以使用分部类来重新实现一些方法

  • 要在这里格式化代码,只需将其缩进4个空格,不要将其包装在
    块中。有一个小按钮,你可以用它来为你做。谢谢你,它真的开始烦扰我。谢谢,这工作。。。P.s.Stackoverflow社区太好了。对最后
    
    //This works  
    public class MenuItem  
    {  
        public string name;  
        public MenuItem()  
        {  
            name = "pizza";  
        }  
    }
    
    
    
    //This crashes / doesnt work  
    public class MenuItem  
    {  
        private string name;  
        public MenuItem()  
        {  
            name = "pizza";  
        }  
        public string Name  
        {  
            get { return name; }  
            set { name = value; }  
        }  
    }
    
    
    
    //This successfully calls web method, but the method does not exist during test  
    public class MenuItem  
    {  
        private string name;  
        public MenuItem()  
        {  
            name = "pizza";  
        }  
        public string getName()  
        {  
            return name;  
        }  
    }
    
    [Serializable]
    public class MenuItem
    {
       private string name;
    
       public MenuItem()
       {
          name = "pizza";
       }
    
       public string Name
       {
          get {
             return name;
          }
          set {
             name = value;
          }
       }
    
    }