Best way to set all applicable flags?
I have a string that represent possible flags. How can I set all the flags that are in the string?
This works but is there a better way?
This works but is there a better way?
Classifiers getClassifiers(string s) {
Classifiers c = new();
foreach (var enumVal in Enum.GetValues(typeof(Classifiers)))
{
if (s.Contains(enumVal.ToString())) c += (int)enumVal;
}
return c;
}
Classifiers c = getClassifiers("CTR HI LAG");
Console.WriteLine(c); // HI, CTR, LAG
[Flags]
enum Classifiers
{
LO = 1<<0,
HI = 1<<1,
LFT = 1<<2,
RIT = 1<<3,
CTR = 1<<4,
LAG = 1<<5
}Enum.Parse<Classifiers>("CTR,HI,LAG")Classifiers c = LO | HI | LFT | RIT | CTR | LAG;You should already know what piece of string you are looking at is supposed to contain, then it either "is" that or not. No contains.Also this, it doesn't really matter. They should not use a string, period.
Enum.Parse<Classifiers>("CTR,HI,LAG")Classifiers c = LO | HI | LFT | RIT | CTR | LAG;[Flags]
enum Classifiers
{
LO = 1<<0,
HI = 1<<1,
LFT = 1<<2,
RIT = 1<<3,
CTR = 1<<4,
LAG = 1<<5,
ALL = LO | HI | LFT | RIT | CTR | LAG,
}