Pregunta

Tengo una clase (ClassA) que tiene una propiedad IEnumerable. Luego tengo otra clase (ClassB) que tiene la misma propiedad. Están compartiendo una interfaz (InterfaceA). El ClassB es básicamente una clase contenedor para múltiples ClassA's. Cómo implemento la propiedad para ClassB.

interface InterfaceA
{
    IEnumerable<int> MyInts
    {
        get;
    }
}

class ClassA : InterfaceA
{
    public IEnumerable<int> MyInts
    {
        get;
        private set;
    }
}

class ClassB : InterfaceA
{
    ClassA[] classAs = new ClassA[10];
    public IEnumerable<int> MyInts
    {
        get
        {
            //What goes here ?
            classAs.SelectMany(classA => classA.MyInts);
        }

    }
}

Intenté usar una instrucción de selección LINQ pero eso no funciona.

Editar: Parece que no busqué lo suficiente. La respuesta está aquí en esta pregunta. ¿Cómo agrego múltiples IEnumerables de T

Editar 2: Incluya el código de ejemplo que funcionó para mí, en caso de que alguien más lo necesite.

¿Fue útil?

Solución

Solo agrego mi respuesta, para que esto no quede sin respuesta.

classAs.SelectMany (classA = > classA.MyInts);

Encontré esto en esta pregunta .

Otros consejos

        public IEnumerable<int> MyInts
        {
            get
            {
                foreach (ClassA c in classAs)
                {
                    foreach (int i in c.MyInts)
                    {
                        yield return i;
                    }
                }
            }

        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top