Foros del Web » Programación para mayores de 30 ;) » .NET »

C# 2.0 Duda extraña sobre DataTables tipados y proyectos.

Estas en el tema de C# 2.0 Duda extraña sobre DataTables tipados y proyectos. en el foro de .NET en Foros del Web. Buenas noches foreros, Tengo una solucion con cuatro proyectos: PROYECTO PRESENTACION PROYECTO NEGOCIO PROYECTO DATOS PROYECTO GENERAL Todos tienen una referencia a PROYECTO GENERAL, en ...
  #1 (permalink)  
Antiguo 08/12/2007, 17:46
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
C# 2.0 Duda extraña sobre DataTables tipados y proyectos.

Buenas noches foreros,

Tengo una solucion con cuatro proyectos:
PROYECTO PRESENTACION
PROYECTO NEGOCIO
PROYECTO DATOS
PROYECTO GENERAL


Todos tienen una referencia a PROYECTO GENERAL, en el cual, entre otras cosas tengo un DataSet creado en modo diseño con DataTables tipados creados en el diseñador.


En PROYECTO DATOS, tengo una funcion para llamar a procedimientos almacenados que se pasa por referencia un DataTable:
Código:
public bool SPLectura(string txtNombreSP, ref DataTable tbDatos){..


Desde PROYECTO NEGOCIO, creo una instancia de mi DataTable tipado (tbUsuarios) e intento pasar este DataTable tipado por referencia a la funcion del PROYECTO DATOS:
Código:
//Creo la instancia del DataTable
dsIntercambiacasa.tusuariosDataTable tbDataTable = new dsIntercambiacasa.tusuariosDataTable();

//Creo el objeto de PROYECTO DATOS
HerramientasBD.clsHerramientaBd obj = new HerramientasBD.clsHerramientaBd(HerramientasBD.TipoAcceso.PostgreSql, txtCadenaConexion);

//Llamo a la funcion de lectura de procedimiento almacenado:
obj.SPLectura("", ref tbDataTable);

Bueno, pues en esta ultima linea me sale el siguiente error:
Código:
Error	1	The best overloaded method match for 'HerramientasBD.clsHerramientaBd.SPLectura(string, ref System.Data.DataTable)' has some invalid arguments	C:\Documents and Settings\Administrador\Mis documentos\Visual Studio 2008\Projects\IntercambioCasas\IntercambioCasas.Negocio\ClsLogin.cs	26	13	IntercambioCasas.Negocio
Error	


2	Argument '2': cannot convert from 'ref IntercambioCasas.General.dsIntercambiacasa.tusuariosDataTable' to 'ref System.Data.DataTable'	C:\Documents and Settings\Administrador\Mis documentos\Visual Studio 2008\Projects\IntercambioCasas\IntercambioCasas.Negocio\ClsLogin.cs	26	35	IntercambioCasas.Negocio

Sin embargo, si creo una funcion en el mismo PROYECTO NEGOCIO, que reciba como parametro un DataTable, no me da error:
Código:
dsIntercambiacasa.tusuariosDataTable tbDataTable = new dsIntercambiacasa.tusuariosDataTable();

MiPrueba(ref tbDataTable );

private void MiPrueba(ref DataTable tbDatos)
{
}


Saben por que no me hace la conversion de DataTables entre dos proyectos diferentes y por que si me la hace cuando la funcion esta dentro del mismo proyecto?


En fin, espero puedan ayudarme, por que me estoy comiendo demasiado la cabeza y no se por que es...
__________________
Charlie.

Última edición por chcma; 08/12/2007 a las 17:54
  #2 (permalink)  
Antiguo 08/12/2007, 18:08
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: C# 2.0 Duda extraña sobre DataTables tipados y proyectos.

Bueno amigos, esta es mi conclusión:

Si la funcion espera que el parametro sea por referencia, se ha de pasar el objeto del mismo tipo, no vale que la clase herede de ese tipo.

Es decir, esto no valdria:
Código:
private void Boton(...)
{
MiDataSet.MiDataTableTipado tbDatos = new ......;
MiFuncion(ref tbDatos);
}

private void MiFuncion(ref DataTable tbDatos)
{

}


Pero esto si valdria (Fijarse en que quite el ref):
Código:
private void Boton(...)
{
MiDataSet.MiDataTableTipado tbDatos = new ......;
MiFuncion(ref tbDatos);
}

private void MiFuncion(DataTable tbDatos)
{

}
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:50.