Pergunta

Eu tenho uma classe (ClassA) que tem uma propriedade IEnumerable. Eu, então, tem uma outra classe (ClassB) que tem a mesma propriedade. Eles estão compartilhando uma interface (InterfaceA). O ClassB é basicamente uma classe de contêiner para vários ClassA de. Como eu implementar a propriedade 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);
        }

    }
}

Eu tentei usar uma instrução select LINQ, mas que não funciona.

Edit: Parece que eu não parecia forte o suficiente. A resposta está aqui nesta questão. Como faço para agregar vários IEnumerables de T

Edit 2: Incluir o código de exemplo que funcionou para mim, alguém precisa de outra pessoa meter-lo.

Foi útil?

Solução

Basta adicionar a minha resposta, de modo que este não ficar sem resposta.

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

Encontrei este de esta questão .

Outras dicas

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

        }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top