У меня есть два флага перечислений, которые выглядят что-то вроде следующегоПреобразование флаг Enum в другой флаг Enum в C#
[Flags]
public enum EnumTypeOne: ulong
{
NONE = 0,
STUFF_ONE = (1 << 0),
STUFF_TWO = (1 << 1)
}
[Flags]
public enum EnumTypeTwo: ulong
{
NONE = 0,
STUFF_ONE = (1 << 0),
STUFF_TWO = (1 << 1)
}
Один перечисление находится внутри одной библиотеки классов (только для внутреннего использования), а другой будет поставляться в качестве длл.
Внутренне я хотел бы маршаллировать между этими двумя перечислениями, так как они идентичны. Я знаю, как это сделать с регулярным перечислением, но он не работает, если на одном из перечислений задано более одного флага.
Я попытался использовать следующее решение
var enumResult = (EnumTypeOne)Enum.Parse(typeof(EnumTypeOne), Enum.GetName(typeof(EnumTypeTwo), mEnumTypeTwo);
Как было указано выше, это работает только, если только один флаг в использовании, использование нескольких флагов вызывает его к падению.
Есть ли решение, позволяющее эффективно конвертировать между двумя перечислениями?
Спасибо, не думаю, что это будет так просто! –
@const_ref: перечисления - это просто целые числа внизу, поэтому, если значения означают одно и то же, безопасно просто конвертировать между ними как есть. – siride
@siride Я понял, что это был улунг под капюшоном, но мне было трудно в прошлом при преобразовании перечислений в перечисления и действительно не думал, что это будет так просто. ура –