Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
char[] splitter = { ',' };
string types = hashtable[FlagsEnumValue].ToString();
string[] typesStringArray = types.Split(splitter, StringSplitOptions.RemoveEmptyEntries);
ArrayList typesArray = new ArrayList();
foreach (string str in typesStringArray)
{
foreach (string type in Enum.GetNames(typeof(FlagsEnum)))
{
if (type == str.Trim())
{
typesArray.Add((FlagsEnum)Enum.Parse(typeof(FlagsEnum), str, true));
break;
}
}
}
foreach (FlagsEnum type in typesArray)
{
if ((someObject.field & type) > 0)
{
typeFound = true;
}
else
{
typeFound = false;
break;
}
}
Автор хотел чтобы его любили. Точнее он хотел сконвертировать строковое представление битового енама в инам и сравнить по маске с проперти обьекта. Если бы автор прочел документацию то написал бы так:
string types = hashtable[FlagsEnumValue].ToString();
if (types != "")
{
FlagsEnum enum = (FlagsEnum)Enum.Parse(typeof(FlagsEnum), types, ignoreCase: true);
if ((enum & someObject.field) == enum)
typeFound = true;
}
а ещё быстрее и type-safety
а ещё можно через #define