相关疑难解决方法(0)

如何从价值中获取C#Enum描述?

可能重复:
获取Enum值的属性

我有一个带有Description属性的枚举,如下所示:

public enum MyEnum
{
    Name1 = 1,
    [Description("Here is another")]
    HereIsAnother = 2,
    [Description("Last one")]
    LastOne = 3
}
Run Code Online (Sandbox Code Playgroud)

我找到了一些用于根据Enum检索描述的代码

public static string GetEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());

    DescriptionAttribute[] attributes = fi.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];

    if (attributes != null && attributes.Any())
    {
        return attributes.First().Description;
    }

    return value.ToString();
}
Run Code Online (Sandbox Code Playgroud)

这允许我编写如下代码:

var myEnumDescriptions = from MyEnum n in Enum.GetValues(typeof(MyEnum))
                         select new { ID = (int)n, Name = Enumerations.GetEnumDescription(n) };
Run Code Online (Sandbox Code Playgroud)

我想要做的是,如果我知道枚举值(例如1) - 我该如何检索描述?换句话说,如何将整数转换为"枚举值"以传递给我的GetDescription方法?

c# enums

364
推荐指数
5
解决办法
41万
查看次数

数据将枚举属性绑定到网格并显示描述

这是一个类似于如何将自定义枚举描述绑定到DataGrid的问题,但在我的情况下,我有多个属性.

public enum ExpectationResult
{
    [Description("-")]
    NoExpectation,

    [Description("Passed")]
    Pass,

    [Description("FAILED")]
    Fail
}

public class TestResult
{
    public string TestDescription { get; set; }
    public ExpectationResult RequiredExpectationResult { get; set; }
    public ExpectationResult NonRequiredExpectationResult { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将BindingList <TestResult>绑定到WinForms DataGridView(实际上是DevExpress.XtraGrid.GridControl,但通用解决方案将更广泛适用).我希望描述出现而不是枚举名称.我怎么能做到这一点?(class/enum/attributes没有约束;我可以随意更改它们.)

c# data-binding enums datagridview winforms

11
推荐指数
2
解决办法
9376
查看次数

标签 统计

c# ×2

enums ×2

data-binding ×1

datagridview ×1

winforms ×1