none
Como agregar un arreglo a una lista generica? RRS feed

  • Pregunta

  • Tengo 3 Métodos que obtienen una lista de 3 catálogos diferentes al final de cada lista debo agregar arreglo 

    {Id = "O",Descriptivo = "Otro"} con  ayuda del método genérico AddOther pero no he encontrado la forma de que se agregue este objeto sin importar el tipo de catalogo ya que el método add no acepta la inclusión de tipo genérico.

            

    //public List<Catalogs> GetSector(bool addOther)
            //{
            //    using (var repository = new ToolsRepository())
            //    {
            //        var result = repository.GetSector();
            //        if (addOther) result = AddOther(result);
            //        return result;
            //    }
            //}
            //public List<CatalogTipoPesona> GetTipoPersona(bool addOther)
            //{
            //    using (var repository = new ToolsRepository())
            //    {
            //        var result = new List<CatalogTipoPesona>();
            //        result = repository.GetTipoPersona();
            //        if (addOther) result = AddOther(result);
            //        return result;
            //    }
            //}
            //
            //public List<CatalogFedYNot> GetFedatario(bool addOther)
            //{
            //    using (var repository = new ToolsRepository())
            //    {
            //        var result = new List<CatalogFedYNot>();
            //        result = repository.GetFedatario();
            //        //if (addOther) result = AddOther(result);
            //        return result;
            //    }
            //}

          private List<T> AddOther<T>(List<T> result)
            {
                result.Add(new T item 
                {
                    Id = "O",
                    Description = "Otro"
                });
                return result;
            }



                    
    lunes, 20 de mayo de 2019 16:35

Respuestas

  • hola

    Porque el codigo que nos muestras esta comentado ?

    Para poder crear instancia debes definir una interfaz que respecten estas clases

    interface ICatalogo {
    
        public string Id {get;set;}
    
        public string Descripcion{get;set;}
    }

    entonces las clases definen

    public class Catalogs : ICatalogo{
    
      //aqui propiedades
    
    }
    
    public class CatalogFedYNot : ICatalogo{
    
      //aqui propiedades
    
    }


    Entiendo ese codigo esta en una clase, si es asi podria ser

    List<Catalogs> listCatalogo = obj1.GetSector(true);
    
    listCatalogo = obj1.AddOther<Catalogs>(listCatalogo);



    Para otra clase seria

    List<CatalogFedYNot> listCatalogFedYNot = obj1.GetFedatario(true);
    
    listCatalogFedYNot = obj1.AddOther<CatalogFedYNot>(listCatalogFedYNot );

    Pero debes definir

     private List<T> AddOther<T>(List<T> result) where T : ICatalog, new
    {
       //codigo
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de mayo de 2019 16:58