带有用户友好字符串的 Enum ToString

2024-01-26

我的枚举由以下值组成:

private enum PublishStatusses{
    NotCompleted,
    Completed,
    Error
};

不过,我希望能够以用户友好的方式输出这些值。
我不需要再次从字符串到值。


我用Description http://msdn.microsoft.com/en-us/library/system.componentmodel.descriptionattribute.aspx来自 System.ComponentModel 命名空间的属性。简单地装饰枚举:

private enum PublishStatusValue
{
    [Description("Not Completed")]
    NotCompleted,
    Completed,
    Error
};

然后使用此代码来检索它:

public static string GetDescription<T>(this T enumerationValue)
    where T : struct
{
    Type type = enumerationValue.GetType();
    if (!type.IsEnum)
    {
        throw new ArgumentException("EnumerationValue must be of Enum type", "enumerationValue");
    }

    //Tries to find a DescriptionAttribute for a potential friendly name
    //for the enum
    MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString());
    if (memberInfo != null && memberInfo.Length > 0)
    {
        object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);

        if (attrs != null && attrs.Length > 0)
        {
            //Pull out the description value
            return ((DescriptionAttribute)attrs[0]).Description;
        }
    }
    //If we have no description attribute, just return the ToString of the enum
    return enumerationValue.ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有用户友好字符串的 Enum ToString 的相关文章

  • 使用 Unity 跨多种类型注入相同的 DataContext 实例

    假设我有 IRepository 接口及其实现 SqlRepository 它将 LINQ to SQL DataContext 作为参数 假设我有 IService 接口及其实现服务 它需要三个 IRepository IReposito
  • C++ 中的类 C# 事件,组合

    在过去的几个月里 我经常使用 C 并习惯了事件和委托 在类中使用组合非常容易 只需使用事件从组件获取消息 现在我正在尝试在 C 中做类似的事情 但不知道如何做 C 中的组合是如何完成的 我想到的唯一方法是继承 您从类派生并重写其函数以接收来
  • 如何在 .net 中为 Google 云存储签名 url

    我想知道如何使用 net中的谷歌云存储类生成signurl 我已经根据要求创建了字符串 GET 1388534400 bucket objectname 但我现在想用 p12 密钥签署这个 url 然后想让它变得 url 友好 该库没有显示
  • 退回 10 天后结束的拍卖

    我的 api xml 对于从当前到 10 天结束的返回拍卖工作正常 但对于 10 天后结束的列表不起作用 这是我下载结果的方式 public string DownLoad string url used to build entire i
  • Windows Phone 8.1 中的 RadialGradientBrush?

    请告诉我如何在 Windows Phone 8 1 应用程序中创建 RadialGradientBrush 我试图在这里找到它 但没有这样的刷子 Windows UI Xaml Media 有任何想法吗 谢谢你 如果您不介意从 NuGet
  • 致命错误:iostream:没有这样的文件或目录#include

    我在学习C 的时候遇到了一个问题 编译的时候遇到了错误 The details are as follows You seem to have not installed C support in MinGW If you are usin
  • 如何有效地合并两个 BST?

    如何合并两个二叉搜索树并保持BST的性质 如果我们决定从树中取出每个元素并将其插入到另一个元素中 则此方法的复杂度将为O n1 log n2 where n1是树的节点数 比如T1 我们已经拆分了 并且n2是另一棵树的节点数 比如T2 执行
  • 以有效的方式找到最近点

    我在 2d 平面上有一个点 例如 x0 y0 和一组 n 点 x1 y1 xn yn 我想在 a 中找到距离 x0 y0 最近的点比尝试所有要点要好得多 有什么解决办法吗 我还应该说我的观点是这样排序的 bool less point a
  • 如何找到给定数组的所有可能的子集?

    我想在 C 或 C 中提取数组的所有可能子集 然后计算所有子集数组各自元素的总和 以检查其中有多少等于给定数字 我正在寻找的是算法 我确实理解这里的逻辑 但我现在还无法实现这一逻辑 考虑一组S of N元素 以及给定的子集 每个元素要么属于
  • C:epoll和多线程

    我需要创建专门的 HTTP 服务器 为此我计划使用 epoll sycall 但我想利用多个处理器 核心 但我无法提出架构解决方案 ATM我的想法如下 使用自己的epoll描述符创建多个线程 主线程接受连接并将它们分配给线程epoll 但还
  • 在 C# 中快速加载/读取 TIFF 文件

    我正在编写一个处理 TIFF 图像的 C 应用程序 主要是显示文件 重新排序页面 删除页面 分割多页图像 将单个图像合并为一个多页图像等 我们处理的大多数图像都较小 无论是文件大小还是页码 但也有一些较大的图像 显示图像时 我们需要将多页
  • 为什么宇宙飞船与盒子对撞机相撞后不再回头?

    我希望当发生碰撞时将宇宙飞船转回来 但他们继续前进 开箱即用的对撞机和地形 使克隆船在碰撞时我想返回的脚本 using System using UnityEngine using Random UnityEngine Random usi
  • C# 中的私有“集合” - 无法理解它

    我见过很多使用类似的东西编写的示例代码 请原谅这是多么可怕的罐头 public class Test public object Thingy get private set 不幸的是 这些例子从未真正解释为什么 set 被设置为私有 所以
  • 回发后我的 JavaScript 函数在 ASP.NET 中不起作用

    我有共同的功能 我把它折叠起来CommonFunctions js在脚本文件夹中 我将它包含在我的主页上并在我的页面上使用它 当我在页面上进行任何回发时 我的功能不起作用 My CommonFunctions js function gf
  • 有没有一种方法可以通过数据注释来验证一个日期属性大于或等于另一个日期属性?

    我有一个StartDate and EndDate on my SchoolEvents模型和我想知道是否有任何数据注释可以用来验证StartDate小于或等于EndDate并且那EndDate大于或等于StartDate 从我的角度来看
  • GNU Make “Abort trap: 6” 在 gcc 调用之后,但是单独执行时调用是有效的

    我正在使用 GNU Make 构建一个很多人都会使用的 C C 项目 makefile 尝试通用 因为该项目中有许多可选文件 每个用户通过 MATLAB 界面选择这些文件 然后通过命令行参数 make target OPTS XYZ 等 将
  • 以系统帐户运行exe

    我正在尝试将我的 c exe 作为系统帐户运行 我怎样才能做到这一点 我试过了
  • 如何在.Net中使用SQLCipher

    我想用C winform 读取一个SQLCipher数据库并找到一个开源项目SQLitePCL https github com ericsink SQLitePCL raw 但是我还没有找到这个使用的例子 而且文档也不是很多 有朋友用过这
  • 无法将“MongoDB.Bson.Serialization.Serializers.DateTimeSerializer”类型的对象转换为“MongoDB.Bson.Serialization.IBsonSerializer”类型

    在寻找解决方案时我得到了this https stackoverflow com questions 30421379 mongodb custom collection serializer and this http mongodb g
  • 类和结构在填充和继承方面的区别

    以下所有操作都将在 GCC 9 1 上使用编译器资源管理器 https github com mattgodbolt compiler explorer 在 x86 64 中 使用 O3 我有这个代码 struct Base Base do

随机推荐

  • gcc vs clang - 使用 `make_overload` 可变参数 lambda 继承时出现不明确的重载 [重复]

    这个问题在这里已经有答案了 又一轮的时间到了铿锵与海湾合作委员会 godbolt org 上的实例 https goo gl RDPCKD Test 0 重载的可调用对象 struct Trad auto operator int retu
  • 如何在 VHDL 中将整数作为十六进制写入标准输出?

    我可以打印一个integer作为十进制到标准输出 library std use std textio all entity min is end min architecture behav of min is begin process
  • Sass 父选择器和悬停?

    悬停时是否可以触发家长的课程 我知道它可以用 jquery 完成 但我想做一个纯 css 解决方案 My code navbar form padding left 55px input group width 200px form con
  • 在 apache 上设置 django(mod_wsgi、virtualenv)

    我第一次将我的 django 网站投入生产 所以请原谅我的无知 我正在尝试将我的 django 站点放在 apache 上 我已阅读有关 mod wsgi 的文档并尝试了简单的 Hello world 因此配置正常 我遇到的问题似乎是与使用
  • Google Sheets 是否有将范围压缩到一列中的功能?

    我想找到内置函数 但无济于事 所以我不得不将其写在脚本中 function squeeze range return concat range filter n gt n 这个 JS 函数压平了二维数组range并返回它 Note它过滤掉列
  • 如何破解已安装的 perl6 模块源?

    我希望能够查看并更改已安装的源代码 通过zef perl6 模块 我怎样才能做到这一点 在我的系统上 模块源位于 perl6 sources 还有一些关于模块的元数据文件 perl6 dist 我也可以使用zef locate 显示模块的源
  • 为什么类属性会被记住?

    这是一个示例 python 模块 foo py class Foo object a def init self print self a self filla def filla self for i in range 10 self a
  • 使用静态类型语言 (F#) 处理异构数据

    F 的主张之一是它允许交互式脚本编写和数据操作 探索 我一直在尝试使用 F 试图了解它与 Matlab 和 R 进行数据分析工作的比较 显然 F 并不具备这些生态系统的所有实用功能 但我对底层语言的一般优点 缺点更感兴趣 对我来说 最大的变
  • 如何修复iOS中标签栏控制器的标签栏?

    我在选项卡栏的底部添加了自己的图像图标 但它只显示灰色方块和标题 我怎样才能解决这个问题 问题是你的图像缺乏透明度 标签栏期望您的图像是透明蒙版 也称为模板 仅考虑其透明度 不透明度程度 您的图像是完全不透明的实心图像 因此它显示为实心正方
  • Grails:如何将 Grails 列表导出到 Microsoft Excel?

    我有一个包含信息的列表 我想将其导出到 Excel 我该怎么做 导出插件 好用吗 我想我不久前看到过一个将文件导出到 Excel 的功能 但现在找不到了 如果你想actualExcel 文档 而不仅仅是 CSV 文件 我使用了JExcel库
  • PySpark - 添加一个新列,其中包含按用户排名

    我有这个 PySpark DataFrame df pd DataFrame np array email protected cdn cgi l email protection 2 3 email protected cdn cgi l
  • 如何将条形图更改为降序排列?

    我希望图表中的条形按降序排列 有没有办法自动执行此操作 我看过类似的问题但没有成功 initialmth lt structure list A c 10 4 B c 28 18 C c 9 1 D c 39 33 E c 13 8 F c
  • mysql将列数据类型复制到另一个表

    有没有办法将列的结构从已填充的表复制到空的新表 我只是询问复制结构而不复制数据 例子 我们有一张桌子 CREATE TABLE animals animal varchar 11 NOT NULL food varchar 11 NOT N
  • 三个js物体绕球体旋转

    我正在使用粒子系统将点均匀分布在球体上 效果很好 然后 我将给定几何图形的实例放置在这些点上 这部分也有效 我现在想旋转这些几何形状以匹配球体的表面角度 这是到目前为止的功能 function placeGeometryAtPlatonic
  • 将 Form 设置为 Pristine 而不清除数据

    我有一个显示列表的表单
  • 如何在java中使用Http客户端传递查询参数

    我使用给定的代码在 java 中使用 GET REST 调用 但收到错误代码 404 即 Not Found 但是当我在浏览器中使用相同的 URL 时 我得到了输出并且工作正常 我是 JAVA 新手 可能是我错误地传递了查询参数 但我没有得
  • play-services-base google play 服务的用例

    我对用例有点困惑 com google android gms play services base 8 4 0 来自播放服务文档 https developers google com android guides setup它说这是为了
  • ScrollView:当手机处于横向模式时,内容图像会被裁剪

    我正在尝试使用一些包含在中的图像来创造读书体验scrollViews里面一个FlatList 在 肖像 模式下一切正常 但在 风景 模式下图像被裁剪 我希望能够在 横向 时垂直滚动 以便用户可以探索整个图像 该图像在 横向 中变得大于屏幕高
  • 是否有可视化代码编辑器功能可以列出当前页面的函数/方法?

    在当前 TypeScript 文件上尝试使用 Command P 获取函数名称 但它没有找到我知道页面上存在的函数 浏览了文档 但这是一个特定的需求 有谁知道是否存在这样的事情 您只需执行关键字组合即可获取列出的当前页面的函数名称列表 或者
  • 带有用户友好字符串的 Enum ToString

    我的枚举由以下值组成 private enum PublishStatusses NotCompleted Completed Error 不过 我希望能够以用户友好的方式输出这些值 我不需要再次从字符串到值 我用Description h