Foros del Web » Programando para Internet » ASPX (.net) »

Mezclar VB y C# AYUDAAAAA

Estas en el tema de Mezclar VB y C# AYUDAAAAA en el foro de ASPX (.net) en Foros del Web. Hola amigos me esta ocurriendo una cosa muy graciosa. tengo una aplicacion windows en VB y un proyecto C# que contiene una funcion que es ...
  #1 (permalink)  
Antiguo 12/08/2009, 09:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Mezclar VB y C# AYUDAAAAA

Hola amigos me esta ocurriendo una cosa muy graciosa.

tengo una aplicacion windows en VB y un proyecto C# que contiene una funcion que es llamada desde el primero.

uno de los parametros es un objeto instanciado de una clase y al compilarlo o ejecutarlo me da problemas y siempre me lo detecta como byval cuando en mi caso seria por referencia pero ni con byval ni por referencia tira...

Puede ser que no se puedan pasar objetos?? HELP ME !!!!!!!!!


gracias
  #2 (permalink)  
Antiguo 12/08/2009, 10:14
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años
Puntos: 3
Respuesta: Mezclar VB y C# AYUDAAAAA

Hola Sicofrat, no se entiende muy bien lo que planteas, igual basandome en estas suposiciones que haré te contesto.

Supuestos

Tienes una Solucion .NET y adentro tienes dos proyectos
Uno VB.NET
El otro C#

Desde VB.NET intentas llamar una funcion que hiciste en C# y no te funciona.

Seria importante saber que parametros tiene la funcion y que le quieres pasar para poder darte una mejor respuesta.

Deberias chequear que haces la referencia a la libreria que contiene esa funcion para empezar y luego usarla "Using blablabla.blablabla"

En .NET los objetos no son tratados de forma diferente a cualquier otro tipo de datos por lo tanto si, si puedes pasar objetos.

No se como has escrito tu funcion en C# pero algo que podrias "forzar" es poner "ref" delante del parametro.

Ej:
Código:
void MiFuncion (ref StringBuilder strBuild)
{
    strBuild = null;
}
Pregunta: Tu entiendes claramente la diferencia entre: pasar el valor de un objeto por referencia y pasar la referencia de un objeto por valor. Son dos cosas muy diferentes y cruciales a la hora de pasaje de parámetros.

Espero que esto te de algo de luz sobre el tema, sino creo que lo mejor sera que especifiques un poco mas el problema.

Cualquier cosa a las ordenes
Saludos
  #3 (permalink)  
Antiguo 13/08/2009, 00:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mezclar VB y C# AYUDAAAAA

Hola amigo, es exactamente lo que tu dices... una solucion .NET con un proyecto VB y otro C#.

Desde VB llamo a una funcion de C#.

C#
-----
public string MiFuncion (int numero, string cadena, ref dll.log eventos)
// dll es una referencia a un proyecto de negocio y log una clase dentro del mismo.
{
...
}

Y la llamo desde VB
-------------------------
Dim numero as integer
Dim cadena as string
Dim eventos as new dll.log

XXX.MiFuncion(numero, cadena, eventos)

//Por supuesto que dll esta referenciada desde aqui tambien.

El problema que me da cuando compilo es relacionado con "dll.log" en el proyecto de VB y la funcion de C# no me reconoce el tipo eventos ni como ref ni como out aun indicandoselo.

A ver si ves algo en lo que me haya colado.
  #4 (permalink)  
Antiguo 13/08/2009, 08:53
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años
Puntos: 3
Pregunta Respuesta: Mezclar VB y C# AYUDAAAAA

Hola Sico,

Segun entiendo tu tienes un proyecto C# que hace uso de una libreria dll.log, la cual tu usas para declarar una variable en tu funcion de C#.


Código Algunas preguntas para orientarme::
Ver original
  1. Te aseguraste en el proyecto VB / Propiedades en la parte de referencias de haber agregado el proyecto tuyo en C# ?
  2. Tienes un Using de ese proyecto de C# en la cabecera del archivo de VB?
  3. Tienes un Using de dll.log en la cabecera del archivo de VB?
  4.  
  5. La libreria dll.log la has creado tu o es de un tercero ?
  6. Has probado a compilar solamente el proyecto de C# ?


Yo primero aislaria el problema, lease, hacer una solucion nueva con dos proyectos nuevos uno VB y otro C# y reduciria al minimo todo el codigo, digase la funcion C# primero tener un parametro solo string, y llamarla desde VB y asegurarme que anda, luego desde dentro de la funcion de C# declarar una varialbe dll.log eventos = new dll.log e intentar usar esa variable por ejemplo

Código:
public string MiFuncion (int numero, string cadena) 
{
     dll.log eventos = new dll.log     
     
     eventos.NoSeQuePropiedad="xxxx";
     eventos.AlgunaFuncionQueMuestreAlgo();
}
y ver si compila el solo (prj. C#) luego la solucion completa, usarlo desde VB... luego agregar una clase dentro del proyecto C# "MiClase" con un atributo y ponerla como parametro y usarla dentro de la funcion, p.ej.:

Código:
public class MiClase 
{
   private int numero;
   private string nombre;

   // Constructor por defecto:
   public MiClase() 
   {
      nombre = "N/A";
   }

   // Constructor:
   public MiClase(string nombre, int numero) 
   {
      this.nombre = nombre;
      this.numero = numero;
   }

   // Metodo de impresion:
   public void PrintMiClase() 
   {
      Console.WriteLine("Nombre: {0} - Numero: {1}.", nombre, numero);
   }
}

}


y entonces cambiar la signature de la funcion:

Código:
public string MiFuncion (int numero, string cadena, ref MiClase eventos) 
{
     dll.log eventos = new dll.log     
     
     eventos.NoSeQuePropiedad=eventos.nombre;
     eventos.NoSeQueOtraPropiedad=eventos.numero;
     eventos.AlgunaFuncionQueMuestreAlgo();
}


y ahi entonces la llamas desde VB, o sea ir aumentando la complejidad de a poco, porque intuyo que dll.log o no esta bien declarada o hay algun problema de uso.

Por ahi vamos

PD: lo otro que puedes hacer si quieres es mandarme un PM y vemos.

Última edición por GabrielAizcorbe; 13/08/2009 a las 09:15
  #5 (permalink)  
Antiguo 13/08/2009, 09:18
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mezclar VB y C# AYUDAAAAA

Buenas GabrielAizcorbe,

Todo eso ya lo he hecho poco a poco antes y lo que falla es el ultimo paso que me has expuesto. El proyecto C# simpre a compilado bien, es cuando llamo desde VB con el tipo dll.log (es una clase con su atributos y demas).

dll.log es mia y funciona bien, esta bien referenciada y demas...

He probado a pasarle otro parametro que instancia a otra clase distina a dll.log y sufro el mismo problema...

Empiezo a odiar C# :(

PSD: Gracias por las molestias que te estas tomando amigo...
  #6 (permalink)  
Antiguo 13/08/2009, 09:22
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años
Puntos: 3
Busqueda Respuesta: Mezclar VB y C# AYUDAAAAA

Oye algo que no te he preguntado, que error te reporta el compiler ? porque algo ha de decir, digo yo....no digas ! je estoy tontaso....
  #7 (permalink)  
Antiguo 14/08/2009, 00:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mezclar VB y C# AYUDAAAAA

algo asi como que dll.log no pertenece a dll. Me da la impresion de que es como si dll del proyecto VB y la de C# fueran distintas pero las he agregado y quitado cuatrocientas veces (alguna menos :)) y puedo asegurar que es la misma.
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 16:03.