Question

J'ai une classe (ClassA) qui a une propriété IEnumerable. J'ai ensuite une autre classe (ClassB) qui a la même propriété. Ils partagent une interface (InterfaceA). La classe B est fondamentalement une classe de conteneur pour plusieurs classes. Comment implémenter la propriété pour 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);
        }

    }
}

J'ai essayé d'utiliser une instruction de sélection LINQ mais cela ne fonctionne pas.

Modifier: On dirait que je n'ai pas regardé assez fort. La réponse est ici dans cette question. Comment regrouper plusieurs éléments de l'Enumable

Modifier 2: Incluez l'exemple de code qui a fonctionné pour moi, au cas où quelqu'un d'autre en aurait besoin.

Était-ce utile?

La solution

Ajoutez simplement ma réponse pour que cela ne reste pas sans réponse.

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

Ce problème a été trouvé dans cette question .

Autres conseils

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

        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top