public class Questionario
{
public Periodo Periodo { get; set; } // <- para representar uma data!
public List<Turma> ListaDeTurmas { get; set; }
public List<Perguntas> ListaDePerguntas { get; private set; }
//Questionario pode existir sem turma?
//Questionario pode existir sem periogo ?
public Questionario(List<Perguntas> listaDePerguntas, Periodo periodo)
{
Periodo = periodo;
ListaDePerguntas = listaDePerguntas;
}
public bool ValidaQuestionario()
{
if (Periodo == null || `Quero saber aqui se Periodo é vazio` )
{
return false;
}
return true;
}
}
// class periodo
namespace Minos.Site.Models
{
public class Periodo
{
public DateTime DataInicial { get; set; }
public DateTime DataFinal { get; set; }
}
}
Eu entendo que null é não existência de valor e no caso não ter uma instanciação ou é atribuido o valor null na sua declaração. Vazia eu entendo que ela existe !!! é bem ali os dois termos mas, eu entendo assim.
Bom pra solucionar isso tem várias formas uma é criar um método sobrecarregado na sua classe Periodo que vai testar se sua classe existe e também se os dados estão no seu dado inicial, como?
Simples olha só:
public class Periodo
{
public DateTime DataInicial { get; set; }
public DateTime DataFinal { get; set; }
public static implicit operator bool(Periodo p)
{
return p != null &&
p.DataInicial == DateTime.MinValue &&
p.DataFinal == DateTime.MinValue;
}
}
O método public static implicit operator boll(Periodo p) é um método sobrecarregado que agora vai te informar se sua classe é nula e também se suas duas propriedades estão no valor inicial.
Exemplo de como utilizar:
Periodo p = new Periodo();
if (p) // aqui é verificado se é nula e as propriedades estão com o valor inicial
{
p.DataInicial = DateTime.Parse("23/07/2018");
}
Uma outra forma seria criando uma Interface com um método IsEmpty() e fazendo o mesmo código do método sobrecarregado, exemplo:
public interface IEmpty
{
bool IsEmpty();
}
public class Periodo: IEmpty
{
public DateTime DataInicial { get; set; }
public DateTime DataFinal { get; set; }
public bool IsEmpty()
{
return DataInicial == DateTime.MinValue &&
DataFinal == DateTime.MinValue;
}
}
Como usar essa maneira:
Periodo p = new Periodo();
if (p.IsEmpty())
{
p.DataInicial = DateTime.Parse("23/07/2018");
}
Pode ser implementado as duas na mesma classe, sem problemas!
Para saber todos os valores iniciais é só colocar o tipo e logo apos o ponto já aparece o MinValue, exemplo: