Instanciar objetos lista numa classe POCO
Tá dando erro. Como eu instancio minha lista, para que meu foreach no método executar funcionae?
public class Rotina : EntidadeBase
{
#region --- Propriedades Privadas (Rotina) ---
private Lista<Tarefa> cTarefas;
private Lista<AgendamentoRotina> cAgendamentos;
#endregion
#region --- Propriedades Públicas (Rotina) ---
public Lista<Tarefa> Tarefas
{
get { return cTarefas; }
set { cTarefas = value; }
}
public Lista<AgendamentoRotina> Agendamentos
{
get { return cAgendamentos; }
set { cAgendamentos = value; }
}
#endregion
public void Executar()
{
foreach (var tarefa in this.Tarefas)
{
tarefa.Execute();
}
}
}
public class Rotina : EntidadeBase
{
#region --- Propriedades Privadas (Rotina) ---
private Lista<Tarefa> cTarefas;
private Lista<AgendamentoRotina> cAgendamentos;
#endregion
#region --- Propriedades Públicas (Rotina) ---
public Lista<Tarefa> Tarefas
{
get { return cTarefas; }
set { cTarefas = value; }
}
public Lista<AgendamentoRotina> Agendamentos
{
get { return cAgendamentos; }
set { cAgendamentos = value; }
}
#endregion
public void Executar()
{
foreach (var tarefa in this.Tarefas)
{
tarefa.Execute();
}
}
}
Pjava
Curtidas 0
Respostas
Edson Oliveira
30/08/2012
public class Rotina : EntidadeBase { #region --- Propriedades Privadas (Rotina) --- private Lista<Tarefa> cTarefas; private Lista<AgendamentoRotina> cAgendamentos; #endregion #region --- Propriedades Públicas (Rotina) --- public Lista<Tarefa> Tarefas { get { return cTarefas; } set { cTarefas = value; } } public Lista<AgendamentoRotina> Agendamentos { get { return cAgendamentos; } set { cAgendamentos = value; } } #endregion public void Executar() { foreach (var tarefa in this.Tarefas) { tarefa.Execute(); } } }
O que vc está fazendo é chamar o método executar antes de da um new na lista.
Na sua chamada seria assim.
Rotina oRotina = new Rotina(); oRotina.Tarefas = new List<Tarefa> oRotina.Tarefas.Add(new Tarefa() { Id = 1 }); oRotina.Executar();
Agora se vc quer garantir que não de algum tipo de erro, vc pode fazer isso.
public Lista<Tarefa> Tarefas { get { if(cTarefas == null) { cTarefas = new List<Tarefa>(); } return cTarefas; } set { cTarefas = value; } }
GOSTEI 0
Pjava
30/08/2012
Pessoal, fiz isso e a minha lista de Tarefas continua vazia
this.Tarefas = new Lista<Tarefa>();
this.Tarefas.Select(c => new { c.IdTarefa, c.Descricao, c.Rotina, c.TipoTarefa, c.DataAlteracao, c.DataInclusao, c.Ativo });
this.Tarefas = new Lista<Tarefa>();
this.Tarefas.Select(c => new { c.IdTarefa, c.Descricao, c.Rotina, c.TipoTarefa, c.DataAlteracao, c.DataInclusao, c.Ativo });
GOSTEI 0
Edson Oliveira
30/08/2012
this.Tarefas = new Lista<Tarefa>();
this.Tarefas.Select(c => new { c.IdTarefa, c.Descricao, c.Rotina, c.TipoTarefa, c.DataAlteracao, c.DataInclusao, c.Ativo });
Mas vc não adicionou nenhum elemento na lista. Para adicionar é só fazer isso.
this.Tarefas = new Lista<Tarefa>();
Tarefa oTarefa = new Tarefa();
oTarefa.Id = 1;
oTarefa.Descricao= "Item";
oTarefa.TipoTarefa= 1;
oTarefa.DataAlteracao= DateTime.Now;
oTarefa.DataInclusao= DateTime.Now;
oTarefa.Ativo = true;
this.Tarefas.Add(oTarefa);
this.Tarefas.Select(c => new { c.IdTarefa, c.Descricao, c.Rotina, c.TipoTarefa, c.DataAlteracao, c.DataInclusao, c.Ativo });
Mas vc não adicionou nenhum elemento na lista. Para adicionar é só fazer isso.
this.Tarefas = new Lista<Tarefa>();
Tarefa oTarefa = new Tarefa();
oTarefa.Id = 1;
oTarefa.Descricao= "Item";
oTarefa.TipoTarefa= 1;
oTarefa.DataAlteracao= DateTime.Now;
oTarefa.DataInclusao= DateTime.Now;
oTarefa.Ativo = true;
this.Tarefas.Add(oTarefa);
GOSTEI 0
Pjava
30/08/2012
Eu estou com muita dificuldade de éxpressar minha dúvida e o projeto tem muitas coisas, que precisava informar para obter a resposta correta. Não é culpa de vocês e agradeço bastante o esforço voluntário de cada uma para tentar nos explicar o que não estamos entendendo. A classe Tarefa é uma classe abstrata, logo new nela não funciona. Achei que a ex´pressão lambda com select, já me retornava os valores, como uma cláusula Select e isso já prencheria a lista. Vou pegar mais dados e passar para ver se eu consigo dizer a minha dúvida, mas dentro do meu projeto.
GOSTEI 0