none
Pasar objetos entre clases RRS feed

  • Pregunta

  • Buenas, estoy tratando de hacer un programa en donde existe una clase Cliente que lleva diferentes datos respecto a los usuarios. Estos datos también se encuentran en una base de datos.


    El problema es este, estoy tratando de pasar el objeto cliente con el cual quiero trabajar de un formulario a otro. La idea es : un formulario busca el cliente en la base de datos, estos datos se transfieren a un nuevo objeto Cliente y así poder trabajar con el cliente en la memoria sin tener que acceder a la base de datos todo el tiempo. y cuando sea necesario, actualizar la base de datos.

    Que soluciones existen para este tipo de problema ? No quiero (y no puedo..-.-) que mi clase sea static porque si quiero trabajar con más de un cliente a la vez no podré instanciar la clase varias veces. Almenos ese es el concepto que entendí de static.

    He probado pasar por parametro al constructor del nuevo formulario el cliente y no puedo, me da error de compilación diciendome:

    Error    1    Incoherencia de accesibilidad: el tipo de parámetro 'xxx.Clases.Cliente' es menos accesible que el método 'xxx.IngreseDocumento.IngreseDocumento'

    Siendo este el código del constructor (del form que recibe el objeto):

     
    private Cliente cl = new Cliente(); 
    
     public IngreseDocumento(Cliente cliente)
     {
      InitializeComponent();
      this.cl = cliente;
     }

    Otra pregunta que me martilla la cabeza...si esto fuera posible, sería posible pasar por el constructor una colección de objetos "Cliente" ?

     

    Saludos y gracias por el ayuda que varios ya me han dado en estos foros ! :D

     

    • Editado Kraimer.0 miércoles, 8 de diciembre de 2010 13:40
    miércoles, 8 de diciembre de 2010 13:33

Respuestas

  • hola

    el que hayas pasado la instancia del cliente en el constructor es una buena idea

    He probado pasar por parametro al constructor del nuevo formulario el cliente y no puedo, me da error de compilación diciendome

    como estas declarando la clase Cliente ? le has puesto como publica ?

    public class Cliente{

       //aqui las propiedades

    }

    sería posible pasar por el constructor una colección de objetos "Cliente" ?

    claro porque no, solo usas una lista generica del estilo

    private List<Cliente> cliList = null;   


    public IngreseDocumento(List<Cliente> clienteList)
    {
      InitializeComponent();
      this.cliList = clienteList;
    }

    con las listas genericas defines una coleccion tipada

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 8 de diciembre de 2010 13:39

Todas las respuestas

  • hola

    el que hayas pasado la instancia del cliente en el constructor es una buena idea

    He probado pasar por parametro al constructor del nuevo formulario el cliente y no puedo, me da error de compilación diciendome

    como estas declarando la clase Cliente ? le has puesto como publica ?

    public class Cliente{

       //aqui las propiedades

    }

    sería posible pasar por el constructor una colección de objetos "Cliente" ?

    claro porque no, solo usas una lista generica del estilo

    private List<Cliente> cliList = null;   


    public IngreseDocumento(List<Cliente> clienteList)
    {
      InitializeComponent();
      this.cliList = clienteList;
    }

    con las listas genericas defines una coleccion tipada

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 8 de diciembre de 2010 13:39
  • Bueno parece que tenía la solución frente de mis ojos y no la veía, gracias por las aclaraciones...anduvo.

    Ya que estoy aprovecho de tu sabiduría con otra pregunta...creo que en Java se podía...pero en C# no sé, se puede hacer una consulta a la base de datos y que automaticamente (o casi automaticamente) esos datos vayan a parar a un objeto Cliente.....por ejemplo...hacer la consulta a la tabla Cliente en la base de datos (que es exactamente igual al objeto) y de alguna forma directamente poner esos datos en el objeto.

     

    Otra vez gracias por la respuesta !

     

    miércoles, 8 de diciembre de 2010 13:47
  • hola

    sino interpresete mal creo que haces referencia al uso de un ORM muy conocido en Java, o sea Hibernate

    este permite mapear los objetos de negocio a la base de datos y cargarlos con los datos directamente

    en .net tambien puede hacerlo si usas NHibernate

    aunque enn .net exite otra alterntiva adicional, se trata de Entity Framwork

    este es un ORM al igual que NHibernate pero propuesto por Microsoft para el mapeo de clase de negocio y manejar la persistencia, la diferencia mas grande entre estos dos es que EF esta muy integrado al VS, y tienen un diseño del mapeo de clase visual que ayuda mucho

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 8 de diciembre de 2010 14:24
  • Tal como comenta Leandro, EF puede serte útil.

    Aquí puedes encontrar una Guía basica al Entity Framework espero te sea de ayuda.

    Saludos!!!


    MSM-DotNet
    miércoles, 8 de diciembre de 2010 14:45
    Moderador