繁体   English   中英

在C#中将标志枚举转换为另一个标志枚举

[英]Convert a Flag Enum to another Flag Enum in C#

我有两个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 )
}

一个枚举在一个类库中(仅限内部使用),另一个将作为dll提供。

在内部我想在这两个枚举之间编组,因为它们是相同的。 我知道如何使用常规枚举来执行此操作,但是如果在其中一个枚举上设置了多个标志,则它似乎不起作用。

我尝试过使用以下解决方案

var enumResult = (EnumTypeOne)Enum.Parse(typeof(EnumTypeOne), Enum.GetName(typeof(EnumTypeTwo), mEnumTypeTwo);

如上所述,这仅在使用单个标志时才有效,多个标志的使用会使其失效。

有没有一个解决方案允许我有效地在两个枚举之间进行转换?

只是施展它

EnumTypeOne a = EnumTypeOne.STUFF_ONE|EnumTypeOne.STUFF_TWO;
EnumTypeTwo b = (EnumTypeTwo)a;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM