使用枚举显示消息框

时间:2015-06-06 20:10:05

标签: c# enums messagebox

是否可以根据所选的枚举项显示MessageBox? E.g:

public enum Messages
{
    UserAlreadyExists,
    NoUserName,
    NoPassword,
    NoUserNameOrPassword
}

如果是这样,我如何处理每个项目以显示特定的MessageBox?

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

from scipy import mean
list(map(lambda x: mean(StudentGrades[x]), StudentGrades))

答案 1 :(得分:0)

您可以考虑两种替代方法。

显而易见的解决方案:一个简单的switch语句:

var msg = Messages.NoPassword;
switch (msg)
{
    case Messages.NoPassword:
        MessageBox.Show("No password");
        break;
    case Messages.NoUserName:
        MessageBox.Show("No user name");
        break;
    case Messages.NoUserNameOrPassword:
        MessageBox.Show("No user name");
        break;
    case Messages.UserAlreadyExists:
        MessageBox.Show("User already exists");
        break;
}

或者,将[Description] attributes添加到枚举值(假设未在第三方代码中定义枚举):

MessageBox.Show(GetDescription(msg));

您需要this function

public static string GetDescription(Enum value)
{
    FieldInfo field = value.GetType().GetField(value.ToString());

    DescriptionAttribute attribute
            = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))
                as DescriptionAttribute;

    return attribute == null ? value.ToString() : attribute.Description;
}

并且每个枚举成员都需要进行装饰:

public enum Messages
{
    [Description("User already exists")]
    UserAlreadyExists,
    [Description("No user name")]
    NoUserName,
    [Description("No password")]
    NoPassword,
    [Description("No user name")]
    NoUserNameOrPassword
}

当然,这些解决方案都没有本地化。