我有两个Flag枚举,看起来像下面这样
[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 )
}
Run Code Online (Sandbox Code Playgroud)
一个枚举在一个类库中(仅限内部使用),另一个将作为dll提供.
在内部我想在这两个枚举之间编组,因为它们是相同的.我知道如何使用常规枚举来执行此操作,但是如果在其中一个枚举上设置了多个标志,则它似乎不起作用.
我尝试过使用以下解决方案
var enumResult = (EnumTypeOne)Enum.Parse(typeof(EnumTypeOne), Enum.GetName(typeof(EnumTypeTwo), mEnumTypeTwo);
Run Code Online (Sandbox Code Playgroud)
如上所述,这仅在使用单个标志时才有效,使用多个标志会使其失效.
有没有一个解决方案允许我有效地在两个枚举之间进行转换?
Alb*_*rto 12
只是施展它
EnumTypeOne a = EnumTypeOne.STUFF_ONE|EnumTypeOne.STUFF_TWO;
EnumTypeTwo b = (EnumTypeTwo)a;
Run Code Online (Sandbox Code Playgroud)