Ich habe kleines Problem. Ich bin ein neuer Entwickler und ich habe eine Ansicht mit "Alterskriterium" für mein Produkt.Vier nullbare boolesche Mehrfachauswahl-Kontrollkästchen.
Diese Optionen sind: "< 24", "24 - 35", "35 - 45", "> 45".
A json, die ich zur Arbeit benötigen sieht, dass:
"age": {
"lessThan24": true,
"between24And35": true,
"between35And45": true,
"moreThan45": true
}
My View Modell:
public class AgeCriterionViewModel
{
public bool? LessThan24 { get; set; }
public bool? Between24And35 { get; set; }
public bool? Between35And45 { get; set; }
public bool? MoreThan45 { get; set; }
}
Und mein Domain-Modell:
public class AgeCriterion
{
public int? From { get; set; }
public int? To { get; set; }
}
So, hier ist mein Problem. Ich muss Viewmodel zu Domänenmodell zuordnen. Diese booleschen Werte sind jedoch nullfähig, sodass sie null, falsch oder wahr sein können. OLSO kann Multiselect sein. Diese Optionen können also "lessthan24" und "zwischen35and45" sein oder alle oder keine.
Ich denke über etwas schreckliche BIG IF Konstruktion zu bauen. Aber wie kann ich alle Möglichkeiten prüfen? Gibt es einen schönen Weg?
Ich habe, dass in diesem Moment:
if (age == null)
return null;
AgeCriterion criterion = new AgeCriterion();
if (age.LessThan24.HasValue)
{
if (age.LessThan24.Value)
{
criterion.From = 0;
criterion.To = 24;
}
}
Trennen Sie es aus, erstellen Sie Methoden, die einen nullbaren booleschen Wert in einen booleschen Standard konvertieren und wiederverwenden. Wie für einen netten Weg, nicht, dass ich bewusst bin, müssen Sie tun, wenn Aussagen irgendwo, aber machen Sie es so, dass der Code wiederverwendbar ist, um sich in Zukunft zu speichern – Draken
Wie verwalten Sie Kriterium, wenn ich 'LessThan24' überprüfe & # Zwischen24 und 35'? –
'public boolean isValid (boolescher Wert?) { return value.hasValue?Wert: falsch; } ' Als ein Beispiel für Ihre Methode. Dann kannst du einfach 'if (isValid (age.LessThen24)) { // Dein Code }' – Draken