Inquiridor
Recebendo arraylist por herança em c#

Pergunta
-
Amigos, eu preciso receber um arraylist por herança em outra classe. Faço debug na classe principal e existem valores nas variáveis mas não estou conseguindo passar esse arraylist para outra classe. Veja o código por favor. Obrigado!
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections;
namespace
Projeto
{
classCImpressao: Ccadastro
{
protectedArrayListdadosImpressao;
publicCImpressao(ArrayListdadosC)
{
dadosImpressao =
newArrayList();
dadosAB = dadosC;
}
publicvoidimprime()
{
}
}
}
Todas as Respostas
-
Olá Marcos,
Segue um exemplo, vê se te ajuda.
using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { public class Program { static void Main(string[] args) { Pessoa person = new Pessoa(); } } public class MinhaClasse { ArrayList array = null; public MinhaClasse(ArrayList array) { this.array = array; } public void Imprimir() { Console.WriteLine(this.array.Count); } } public class Pessoa { public Pessoa() { ArrayList array = new ArrayList(); array.Insert(0, 1); array.Insert(0, 2); array.Insert(0, 3); array.Insert(0, 4); MinhaClasse myClass = new MinhaClasse(array); myClass.Imprimir(); } }
Klayton Gomes MCP /MCTS/ MCAD / MCPD / MCSD Software Architecture / System Analyst
-
Obrigado Klayton, mas veja que eu estou passando por herança, por isso os atributos são protegidos. Veja uma cópia do código mais completo.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections;
namespace
Projeto
{
classCcadastro
{
protectedArrayListdadosAB;
publicCcadastro()
{
dadosAB =
newArrayList();
}
publicvoidadiciona(ArrayListdadosB)
{
dadosAB = dadosB;
}
}
}
Classe que deveria receber os valores...obs não está chegando aqui!
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections;
namespace
Projeto
{
classCImpressao: Ccadastro
{
publicCImpressao()
{
}
publicCImpressao(ArrayListdadosimpressao)
{
dadosAB = dadosimpressao;
}
publicArrayListimprime()
{
returndadosAB;
}
}
}
-
Olá Marcos,
Não entendi bem o que você esta querendo e nem como você esta chamado seu objeto, mas acho que você quer "Roubar" os valores de uma propriedade privada de uma classe.
Veja, em uma herança, a classe não herda seus valores, e sim seus atributos. Para o filho herdar os valores, os mesmo tem que ser valores constantes dentro da classe, você tem que dizer qual o valor da propriedade.
Segue o link que explica melhor o conceito de herança: MSDN - Herança
Bom para voce poder pegar os valores da sua propriedade Ccadastro.dadosa, você terá que tornar publica a mesma, ou criar um método que retorne seus valres. EX:
namespace Projeto { class Ccadastro { public ArrayList DadosAB { get; set; } public Ccadastro() { DadosAB = new ArrayList(); } public void adiciona(ArrayList dadosB) { DadosAB = dadosB; } } class CImpressao : Ccadastro { public CImpressao() { } public CImpressao(ArrayList dadosimpressao) { DadosAB = dadosimpressao; } public ArrayList imprime() { return DadosAB; } } } public class Program { static void Main(string[] args) { ArrayList array = new ArrayList(); array.Insert(0, 1); array.Insert(0, 2); array.Insert(0, 3); array.Insert(0, 4); Projeto.Ccadastro CC = new Projeto.Ccadastro(); CC.adiciona(array); Console.WriteLine(CC); foreach (var item in CC.DadosAB) { Console.WriteLine(item); } Projeto.CImpressao CI = new Projeto.CImpressao(); CI.adiciona(CC.DadosAB); foreach (var item in CI.imprime()) { Console.WriteLine(item); } } } }
Mas se for fazer desta maneria, sugiro usar o método que o Klayton Gomes mostrou.
********************************************************
Sempre lembre de marcar a resposta se ela foi útil.
- Sugerido como Resposta Demetrius Quadros quinta-feira, 11 de dezembro de 2014 13:37