Array
(
)

Instanciar objetos lista numa classe POCO

Pjava
   - 30 ago 2012

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

Edson Oliveira
   - 30 ago 2012

#Código

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.

#Código
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.

#Código
public Lista<Tarefa> Tarefas
{
get 
{ 
  if(cTarefas == null) { cTarefas = new List<Tarefa>(); }
  return cTarefas; 
}
set { cTarefas = value; }
}

Pjava
   - 31 ago 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 });

Edson Oliveira
   - 31 ago 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);

Pjava
   - 31 ago 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.