Frage

Ich habe eine Klasse (Klasse A), die eine IEnumerable Eigenschaft hat. Ich muss dann eine andere Klasse (Klasse B), die die gleiche Eigenschaft hat. Sie teilen sich eine Schnittstelle (InterfaceA). Der ClassB ist im Grunde eine Container-Klasse für mehr KlasseA sind. Wie ich die Eigenschaft für ClassB implementieren.

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);
        }

    }
}

Ich habe versucht, eine LINQ-select-Anweisung verwenden, aber das funktioniert nicht.

Edit: Sieht aus wie ich nicht hart genug aussehen. Die Antwort ist hier in dieser Frage. Wie Aggregieren ich mehrere IEnumerables von T

Edit 2: Fügen Sie den Beispielcode, der für mich gearbeitet, Incase jemand anderes es braucht.

War es hilfreich?

Lösung

Hinzufügen Nur meine Antwort, so dass dies nicht unbeantwortet geht.

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

Sie haben diese von diese Frage .

Andere Tipps

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

        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top