Hola chicos, antes de nada muchas gracias por atenderme.
Tengo un problema tengo un webservice con un atributo vector.
El cliente llama al servidor del siguiente modo:
servidor = new HotelServidor.Service();
servidor.inicializar();
servidor.prueba();
El metodo inicializar modifica los valores del vector, y compruebo que lo rellena correctamente. Ademas desde dentro del metodo inicializar, se llama al metodo prueba antes de terminar. El metodo prueba me dice si se ha modificado el vector, o sigue a nulo.
El resultado es el siguiente:
cliente llama metodo inicializar: modifica el vector y llama a prueba Y me dice que el vector no es nul.
despues el cliente llama a prueba: y dice que el vector si es nul.
deduzco que inicializar está trabajando con su copia local, ¡y no es el objetivo!
aQUI dejo el codigo del servidor:
public class Service : System.Web.Services.WebService
{
public static int numHab=25;
public static int numHoras=10;
public Habitacion[] habitaciones = new Habitacion[numHab];
public Reunion[,] reuniones= new Reunion[numHab,numHoras];
public Service () {
}
[WebMethod]
public void prueba()
{
StreamWriter writer2 = File.AppendText("tempVICKY.txt"); /********/
writer2.WriteLine("prueba:");
if (reuniones[0, 0] == null) writer2.WriteLine("reunion 0 nulo:");
else writer2.WriteLine("reunion 0 inicializada");
writer2.Close();
}
[WebMethod]
public void inicializar() {
int i,j;
for (i=0;i<numHab;i++){
habitaciones
=new Habitacion("Habitacion "+ i,i+10 );
for(j=0;j<numHoras;j++){
reuniones[i,j]=new Reunion();
}
}
StreamWriter writer = File.AppendText("tempVICKY.txt"); /********/
writer.WriteLine("toy inicializando");
if (reuniones[0, 0] == null) writer.WriteLine("reunion 0 nulo");
else writer.WriteLine("reunion 0 inicializada");
writer.Close();
prueba();
}
}
¿Alquien puede decirme porque el metodo no modifica la variable global del vector?
Muchas gracias y un saludo.