客户端:
protected void Button2_Click(object sender, EventArgs e)
{
string str = "";
stuInfo1.StuName = "test";
str = ser.HelloStu(stuInfo1);//传递webservice中的实体类
}
WebServices端:
[XmlInclude(typeof(Student))]
[WebMethod]
public void HelloStu(Student stuInfo)
{
stuInfo.StuName = "改变了!";
return stuInfo.StuName;
}
---------------------------------------------------------
请问,如何做到客户端的stuInfo1的StuName值被改变?
一、直接返回,WebServices端:
[XmlInclude(typeof(Student))]
[WebMethod]
public string HelloStu(Student stuInfo)
{
stuInfo.StuName = "改变了!";
return stuInfo.StuName;
}
二、先客户端
protected void Button2_Click(object sender, EventArgs e)
{
string str = "";
stuInfo1.StuName = "test";
ser.HelloStu(ref stuInfo1);//传递webservice中的实体类
str=stuInfo1.StuName;
}
再服务器端[XmlInclude(typeof(Student))]
[WebMethod]
public void HelloStu(ref Student stuInfo)
{
stuInfo.StuName = "改变了!";
//return stuInfo.StuName;
}
stuInfo1?客户端?没搞错吧?
看来你这个设计只是个demo吧?
如果webservice架构真如此,那架构师就是云彩了
webservice的架构要遵从粗粒度,封装性的原则
基于webservice就会走序列化/反序列化的路,因此传递给webservice的stuInfo1和webservice接收到的并不是同一个对象,这个在设计接口的时候必须注意,通常可以设计为将该对象返回:
public Student HelloStu(Student stuInfo) {
stuInfo.Name = "Changed";
return stuInfo;
}
客户端:
stuInfo1 = webService.HelloStu(stuInfo1);
我记得webservice是不能用ref和out的