Domanda

Ho una classe (ClassA) che ha una proprietà IEnumerable. Ho quindi un'altra classe (ClassB) che ha la stessa proprietà. Stanno condividendo un'interfaccia (InterfaceA). La ClassB è sostanzialmente una classe contenitore per più ClassA. Come implementare la proprietà per 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);
        }

    }
}

Ho provato a usare un'istruzione select LINQ ma non funziona.

Modifica: Sembra che non mi sia sembrato abbastanza difficile. La risposta è qui in questa domanda. Come aggregare più IEnumerables di T

Modifica 2: Includi il codice di esempio che ha funzionato per me, nel caso in cui chiunque altro ne abbia bisogno.

È stato utile?

Soluzione

Sto solo aggiungendo la mia risposta, in modo che non rimanga senza risposta.

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

Trovato da questa domanda .

Altri suggerimenti

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

        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top