使用不同的命名空间映射两个相同的枚举

Fed*_*ico 4 c# enums parsing type-conversion

我有两个相同的C#枚举定义如下:

public enum ArrivalToleranceEnum
{
    ZERO,
    QUARTERHOUR,
    HALFHOUR,
    ONEHOUR,
    TWOHOURS,
}

public enum ArrivalTolerance {

    /// <remarks/>
    ZERO,

    /// <remarks/>
    QUARTERHOUR,

    /// <remarks/>
    HALFHOUR,

    /// <remarks/>
    ONEHOUR,

    /// <remarks/>
    TWOHOURS,
}
Run Code Online (Sandbox Code Playgroud)

ArrivalTolerance是在外部库中定义的,在我的程序中我想使用本地的EnrivalToleranceEnum,所以我需要转换这两种类型.我怎样才能做到这一点?我试图通过结束(使用开关)这样做,但它是非常tedius而不是非常节省时间因为我需要转换其他更大的枚举.

usr*_*usr 8

枚举值由整数常量表示.如果底层枚举常量相同,则只需转换:

(ArrivalToleranceEnum)(int)ArrivalTolerance.HALFHOUR
Run Code Online (Sandbox Code Playgroud)

如果它们不相同,则可以使用反射代码或Enum类的静态成员之一自动执行映射.但是,这更乏味,也更慢.


Kam*_*ski 6

如果只有名称匹配,请不要使用此命令

var value = Enum.Parse(typeof(ArrivalToleranceEnum),ArrivalTolerance.ToString());
Run Code Online (Sandbox Code Playgroud)

如果您不确定所有枚举的int值是否匹配,则最好使用字符串匹配解决方案.