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?

o inicia sesi贸n.

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

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.

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.

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.

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

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

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 鈥淚ReadOnlyList<Objeto>鈥.
Ejemplo:

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

Al momento de devolver la lista se debe utilizar la funci贸n 鈥淎sReadOnly()鈥 para indicar que la lista es 鈥渟olo de lectura鈥, as铆 coincide con el m茅todo.
Las listas de 鈥渟olo lectura鈥 no permiten agregar nuevos elementos.

La forma de trabajar al momento de exponer datos de forma 鈥減煤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 鈥済en茅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.