如何在C#枚举中获取元素的Display属性

苏尼尔·巴马尔

我下面有枚举,我想根据分配给它的值来获取其元素的Display属性。

我需要创建一个函数,在该函数中我需要传递一个值(“ Economic”为1),它将返回相关元素的Display属性。

public enum ProbabilityNames
{
    [Display(Name = "Economic Probability")]
    Economic = 1,
    [Display(Name = "Reliability Probability")]
    Reliability = 2     
}
rytic

您可以为此使用反射:

public static class ProbabilityNamesExtensions
{
    public static DisplayAttribute GetDisplay(this ProbabilityNames value) =>
        typeof(ProbabilityNames)
            .GetField(Enum.GetName(typeof(ProbabilityNames), value))
            .GetCustomAttributes(false)
            .SingleOrDefault(attr => attr is DisplayAttribute) as DisplayAttribute;

    public static string GetDisplayName(this ProbabilityNames value) =>
        value.GetDisplay()?.Name;
}

您可以像这样使用它:

ProbabilityNames.Economic.GetDisplay();

或者,如果您需要基于int值获取显示,则可以将其强制转换为:

((ProbabilityNames)1).GetDisplay();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章