No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Listas de solo Lectura

14/35
Recursos

Nuestro método GetObjetoEscuela nos regresa una lista que debe utilizarse solo para lectura de objetos, sin embargo, al regresar un objeto tipo List es posible para el desarrollador añadir nuevos objetos. Podemos solucionar esto cambiando el tipo List por IReadOnlyList.

Recuerda que una buena practica para las listas de datos que son de manera publica es regresar un tipo de lista genérico, como IEnumerable y en los casos donde serán de solo lectura regresar un tipo IReadOnlyList.

Aportes 21

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Esa no lo conocia, buena clase de hoy

Puedes crear objetos de tipo List<T> sin embargo no puedes crear objetos de tipo IEnumerable<> ya que al ser una interfase es abstracta y no puede ser instanciada

List es una clase. IEnumerable<> es una interface.

Definicion IreadOnlyList

aqui hay algo https://codeday.me/es/qa/20190411/473793.html

otras definiciones mas faciles https://www.youtube.com/watch?v=hhmdsGStDGQ

Si una interfaz es solo un contrato que contiene las propiedades y firmas de métodos, ¿Por qué al utilizar IReadOnlyList si se desempeña una funcionalidad desde una interfaz?, he visto lo mismo haciendo uso de otras interfaces para extender funcionalidad no solo firmas.

Recuerda que una buena practica para las listas de datos que son de manera publica es regresar un tipo de lista genérico, como IEnumerable y en los casos donde serán de solo lectura regresar un tipo IReadOnlyList.

No devolver un tipo especifico sino un tipo de lista generico. Devolver un IEnumerablle Sino quiero que se pueda modificar devolver un IReadOnlyList.

Recuerda que una buena practica para las listas de datos que son de manera publica es regresar un tipo de lista genérico, como IEnumerable y en los casos donde serán de solo lectura regresar un tipo IReadOnlyList.

Listas de solo Lectura

Nuestro método GetObjetoEscuela nos regresa una lista que debe utilizarse solo para lectura de objetos, sin embargo, al regresar un objeto tipo List es posible para el desarrollador añadir nuevos objetos. Podemos solucionar esto cambiando el tipo List por IReadOnlyList.

Para que una lista sea de solo lectura, debe ser de tipo IReadList

Modificacion de esta clase

var diccionario = new Dictionary<LlaveDiccionario, IEnumerable<ObjetoEscuelaBase>>();

            diccionario.Add(LlaveDiccionario.Escuela, new[] { Escuela });
            diccionario.Add(LlaveDiccionario.Curso, Escuela.Cursos.Cast<ObjetoEscuelaBase>());

            var listatmp = new List<Evaluación>();
            var listatmpas = new List<Asignatura>();
            var listatmpal = new List<Alumno>();

            foreach (var cur in Escuela.Cursos)
            {
                listatmpas.AddRange(cur.Asignaturas);
                listatmpal.AddRange(cur.Alumnos);

                foreach (var alum in cur.Alumnos)
                {
                    listatmp.AddRange(alum.Evaluaciones);
                }

            }```

Interfaz de solo lectura: IReadOnlyList o IReadOnlyCollection

Listas solo de Lectura

Representa una colección de elementos de solo lectura a los que se puede tener acceso por un índice.

Para utilizar una lista de lectura se debe utilizar la palabra reservada “IReadOnlyList<Objeto>”.
Ejemplo:

public IReadOnlyList<ObjetoEscuelaBase> GetObjetosEscuela()
{
	return listaObj.AsReadOnly():
}

Al momento de devolver la lista se debe utilizar la función “AsReadOnly()” para indicar que la lista es “solo de lectura”, así coincide con el método.
Las listas de “solo lectura” no permiten agregar nuevos elementos.

La forma de trabajar al momento de exponer datos de forma “pública”, es decir, cuando otros desarrolladores los van a consumir la práctica por defecto es la siguiente:
No devolver un tipo de lista específico, debe ser un tipo de lista “genérico” puede ser un IEnumerable y que el desarrollador lo convierta en la lista que necesite.
Si no es la intención que la lista se modifique se debe enviar un tipo de lista IReadOnlyList.

Interesante, muy bien

No sabía, buen dato

En este caso considero que seria como implementar listas genericas

Definicion: Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and manipulate lists.

coolll … aprendiendo ando

No sabia que se podia hacer eso, buena practica.

Muy buena practica el utilizar IReadOnlyList, ahora comenzaré a implementar dicha practica para proteger mis listas

Muy buena clase.

Muy buenos consejos, me encanto esta clase!

No conocia IReadOnlyList y no sabia las ventajas de utilizar IEnumerable.