none
arraylist asignado a arraylist RRS feed

  • Pregunta

  • Estoy convirtiendo un proyecto vb .net a c#

    en vb esta asi:

        parametrosPartirDatos(0) = EjecutarETL.ModificarCamposENR(parametrosPartirDatos(0), parametrosPartirDatos(17))
    

    y en c# esta


    parametrosPartirDatos[0] = EjecutarETL.ModificarCamposENR(parametrosPartirDatos[0], parametrosPartirDatos[17]);

    Donde el Metodo ModificarCamposENR esta en la clase EjecutarETL y los parametros son arraylist y arraylist

    y parametrosPartirDatos[0] también es un arraylist en c# me sale un error Object cannot convert to arraylist en ambos parametros.

    Podrian explicarme como mejorar este codigo?

    viernes, 16 de noviembre de 2018 22:37

Respuestas

  • simplemente era colocar lo siguiente

    Dim archivoLeido As ArrayList = CType(parametrosPartirDatos(0), ArrayList) 

    en vb

    y en c# 

    ArrayList archivoLeido = (ArrayList)parametrosPartirDatos[0];

    • Marcado como respuesta greg_dorian lunes, 19 de noviembre de 2018 15:29
    lunes, 19 de noviembre de 2018 15:29

Todas las respuestas

  • Hola, cual es la definición del método EjecutarETL.ModificarCamposENR() ? Me refiero a su firma.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 16 de noviembre de 2018 22:55
    Moderador
  • @Sergio Parra gracias por responder

    el metodo se encuentra asi:

     public ArrayList ModificarCamposENR(ArrayList datosENR, ArrayList tagsAModificar)
            {
                ArrayList datosModificados = new ArrayList();
    
                string strHabilitarEjecucuionETL = RutaPrincipal.HabilitarEjecucuionETL].ToString();
                string strTagFinDatos = RutaPrincipal.TagFinDatos].ToString();
    
    '....... resto de codigo
    


    retorna un  array return datosModificados; este es codigo de c #, en vb esta asi:

    Public Function ModificarCamposENR(datosENR As ArrayList, tagsAModificar As ArrayList)
        Dim datosModificados As New ArrayList
     .......
        Return datosModificados
      End Function

    y la instanciacion esta en c#

    private EjecutarETL ejecutarETL = new EjecutarETL();

    en vb:

    Dim EjecutarETL As New EjecutarETL

    sábado, 17 de noviembre de 2018 15:13
  • hola

    Pero el parametro espera un ArrayList y tu le estas enviando un dato simple

    No se de que tipo es el array list, no se si tendra numero o texto, pero si vas a enviar ciera posicion deberia ser

     public ArrayList ModificarCamposENR(string datosENR, string tagsAModificar)

    cuando indicas una posicion del array estas enviando ese dato simple que contiene y no el array completo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    sábado, 17 de noviembre de 2018 20:57
  • Hola. Pon un punto de ruptura en

    parametrosPartirDatos[0] = EjecutarETL.ModificarCamposENR(parametrosPartirDatos[0], parametrosPartirDatos[17]);

    Y verifica el tipo de cada parámetro que Le estás enviando al método. Tal vez como dice Leandro no es un Arraylist la posición 0 ó 17, sino tipo simple


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 17 de noviembre de 2018 21:21
    Moderador
  • Tal vez el error esté en como cargas la variable parametrosPartirDatos. Puedes mostrarnos ese código? 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 17 de noviembre de 2018 21:22
    Moderador

  • Y verifica el tipo de cada parámetro que Le estás enviando al método. Tal vez como dice Leandro no es un Arraylist la posición 0 ó 17, sino tipo simple

    Hola Este código lo estoy convirtiendo de vb a c# y el que programo esto no tenían un option explicit true u Option Strict On si no en off .

    El que programo esto "quema las posiciones del arraylist" el método que llama ModificarCamposENR

    es este... es demasiado extenso así que coloco de donde llama el método 

     private string ProcesarArchivos(ArrayList datosAProcesar, string nombreArchivoAProcesar)
            {
                datosAProcesar = agregarTags.agregarTags(nombreArchivoAProcesar, datosAProcesar);
                ArrayList parametrosPartirDatos = PartirArchivo.PartirArchivoDatos(datosAProcesar);
    
                // Procear ETL para tags de fechas y valores
                //string strDatosENR = parametrosPartirDatos[0].ToString();
                parametrosPartirDatos[0] = ejecutarETL.ModificarCamposENR(parametrosPartirDatos[0], parametrosPartirDatos[17]);
    
                string strHabilitarCodigoBarras = RutaPrincipal.DatosConfiguracion[(int)VariablesConfiguracion.Configuracion.HabilitarTagsParaCodigoBarras].ToString();
    

    los parametros parametrosPartirDatos[0] y [17] son string,  y gracias a sus intervenciones, he descubierto esto que son string....

    Entonces como convertir parametrosPartirDatos[0] y 17 en ArrayList si el metodo acepta ARRAYLIST????

    lunes, 19 de noviembre de 2018 13:30
  • >>Entonces como convertir parametrosPartirDatos[0] y 17 en ArrayList si el metodo acepta ARRAYLIST?

    es que no tiene sentido esa conversion, porque definir parametros como arraylist si despues vas a enviar un solo dato individual?

    replantea que es lo que hace ese metodo y redefine los parametros, sino no le pases una posicion del array pasale directamente e array completo parametrosPartirDatos sin definir una posicion

    o sea dos caminos

    - analizas que hace el ModificarCamposENR() y lo adaptas para que tome el tipo de dato correcto

    - le pasas el array parametrosPartirDatos sin tomar un indice especifico y que ModificarCamposENR() lo trabaje

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 19 de noviembre de 2018 14:44
  • simplemente era colocar lo siguiente

    Dim archivoLeido As ArrayList = CType(parametrosPartirDatos(0), ArrayList) 

    en vb

    y en c# 

    ArrayList archivoLeido = (ArrayList)parametrosPartirDatos[0];

    • Marcado como respuesta greg_dorian lunes, 19 de noviembre de 2018 15:29
    lunes, 19 de noviembre de 2018 15:29
  • eso no esta correcto, porque un valor simple de una posicion lo casteas a ArrayList?, esta bien como parche y para atarlo con alambre te puede funcionar, pero es una solucion recomendable

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 19 de noviembre de 2018 16:07