Ich habe diese Enum bekamWie Enum Zuordnung in C# optimieren
enum NetopScriptGeneratingCases
{
AddLogMessages,
AddLogErrors,
AddLogJournal,
AllLog = AddLogMessages | AddLogErrors | AddLogJournal,
DoNothing
}
Und es gibt UI mit 3 Kontrollkästchen so je nachdem, welche von ihnen überprüft ich mögliche Fälle zu erzeugen, haben einige Arbeit zu tun.
NetopScriptGeneratingCases netopScriptGeneratingCases = NetopScriptGeneratingCases.DoNothing;
if (checkBoxAddAuditLog.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogJournal;
}
else if (checkBoxAddErrorLog.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogErrors;
}
else if (checkBoxAddLogMessages.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogMessages;
}
else if (checkBoxAddAuditLog.Checked || checkBoxAddErrorLog.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogJournal | NetopScriptGeneratingCases.AddLogErrors;
}
else if (checkBoxAddAuditLog.Checked || checkBoxAddLogMessages.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogJournal | NetopScriptGeneratingCases.AddLogMessages;
}
else if (checkBoxAddErrorLog.Checked || checkBoxAddLogMessages.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogErrors | NetopScriptGeneratingCases.AddLogMessages;
}
else if (checkBoxAddErrorLog.Checked || checkBoxAddLogMessages.Checked || checkBoxAddAuditLog.Checked)
{
netopScriptGeneratingCases = NetopScriptGeneratingCases.AddLogErrors | NetopScriptGeneratingCases.AddLogMessages | NetopScriptGeneratingCases.AddLogJournal;
}
var modifiedFiles = NetopScriptGenerator.GenerateNetopScript(netopScriptGeneratingCases, netopFiles);
Aber ich bin mir nicht sicher, dass dieser Code ein richtig ist ... Gibt es andere Möglichkeiten, es zu tun?
Wenn Sie vorhaben, Ihre 'enum' als eine Reihe von Flaggen als Sie verwenden Indem Sie sie zusammenstellen, um 'AllLog' zu erstellen, müssen Sie ihnen Werte von Potenzen von 2 geben. Das heißt, Sie sollten die erste auf 1, dann 2, dann 4 setzen und' DoNothing' sollte auf gesetzt werden 0. – juharr
Die Art, wie der Code geschrieben ist, ist fehlerhaft, denke ich, da die erste Überprüfung eine Menge anderer Prüfungen verschlucken wird; Sie sollten mit den spezifischsten versuchen und allgemeinere Fälle bis zum Ende zulassen. –