Ho la seguente classe e un metodo chiamato ValidateEverything (), dove IsEverythingValid diventa vero solo quando aob o entrambi sono vere. Mi chiedevo quale sarebbe stato il modo migliore per interrompere il ciclo di foreach. Inoltre, quale sarebbe l'approccio migliore per aggiornare la variabile IsEverythingValid. Supponiamo che le prime tre condizioni if / else-if siano valide.
public class Validator
{
public bool IsEverythingValid { get; private set; }
public string ErrorMessage { get; private set; }
public Validator()
{
IsEverythingValid = false;
ErrorMessage = string.Empty;
}
public void ValidateEverything(ID Id)
{
var everyThing = SomeOtherClass.GetValues(Id);
bool a = true;
bool b = true;
foreach (Something someThing in everyThing)
{
// a = some logic based on the value will be updated
// b = some logic based on the value will be updated
if (!a && !b)
ErrorMessage = "A and B both are messed up";
else if (!a && !someThing.aAllowed)
ErrorMessage = "Only A is messed up";
else if (!b && !someThing.bAllowed)
ErrorMessage = "Only B is messed up";
else
IsEverythingValid = true;
if(ErrorMessage.Length > 0)
break;
}
if (a || b)
{
IsEverythingValid = true;
}
}
}
Qualsiasi suggerimento sarebbe davvero utile.