我的服务端是Webservice,客户端是WindowsApplication,使用VS2008的C#开发。 总共3个问题 
1、如何在Webservice端和客户端传递有内嵌对象或对象集的对象。 
2、如何传递类中的属性来自于内嵌对象的属性。 
3、如何传递类中的属性来自于若干成员的计算 举例: 
1、希望把Class2对象从WebService传递给客户端的时候,客户端可以访问到Class2对象中的class1和class1s两个属性。 
Public Class1 

Private string name; 
Private int id; 
} Public Class2 

Private Class1 c1; 
Private List <Class> c1s; 
    Pulibc Class1 class1 

Get { return c1;} 

Pulibc Class1[] class1s 

Get {  return c1s.ToArray();  } 

} 据一位老师说在两个类前面加上[Serializable()]标记就可以了,但是我试着加了一下之后还是无法得到class1和class1s两个属性,不知道是那里出了问题,请论坛中的大侠赐教。 
2、类中的属性来自于内嵌对象的属性,比如示例中的Class2中的class1desc属性 
3、类中的属性来自于若干成员的计算,比如示例中Class1中的description属性 
Public Class1 

Private string name; 
Private string code; 
Public string description 

Get { return name+"-"+code; } 

} Public Class2 

Private Class1 c1; 
    Pulibc string class1desc 

Get { return c1.description;} 


解决方案 »

  1.   

    非常感谢啊,不过不是很清楚你说的是三个问题的属性前面加[WebMethod]么?
      

  2.   

    你定义webservice的方法的返回类型就是这个类,然后在new个类接收它就行了
      

  3.   

    6楼的同学,不是很明白你说的意思,你可以详细说一下么?我现在的问题:客户端想从Webservice得到包含class1的class2。
    比如示例中的Webservice的函数为
            [WebMethod]
            public Class2 GetClass1Object()
            {
                Class2 c2 = new Class2();            c2.C1 = new Class1();
                c2.C1.Name = "ZhangSan";
                c2.C1.Code = "CSharp";            return c2;
            }客户端的TestCall为
        class TestCall
        {
            localhost.Service1 ws = new localhost.Service1();        public string GetDesp()
            {
        Class2 c2= ws.GetClass1Object();
                Class1 c1=c2.C1—————————————就是这里好像无法实现
                  return.c1.Name;
            }
        }
      

  4.   

    [WebMethod] 
    Public Class2
    {
      Private Class1 c1;
      Private List <[color=#000000]Class> c1s;[/color]
      Pulibc Class1 class1
      {
        Get { return c1;}
       }
       Pulibc Class1[] class1s
      {
        Get {  return c1s.ToArray();  }
      }
    }
    class 是什么意思啊你要把这个webservice给发布了,然后在客户段要引用下,然后就可以直接使用这个
    Class2 c2 = new Class2(); 
    然后属性什么的都是可以的,大致是这个样子
      

  5.   

    class1和class2是类名,详细定义可以看顶贴