需求 : 枚举类型在界面显示的时候可以显示相应的中文信息, 这样界面对用户友好 .场景 : 在一些业务中涉及到审核功能的时候, 往往有这几个状态 :未送审 , 审核中 ,审核通过, 驳回 . 这个时候我们会定义一个枚举类型来描述 : 在C#编程中,枚举(Enum)是一种强大的工具,用于定义一组相关的命名常量。在某些场景下,特别是涉及到用户界面(UI)交互时,我们可能需要将枚举值以更友好的方式呈现,例如使用中文描述。本文将详细探讨如何在C#中实现枚举类型支持显示中文的扩展,以便在UI上提供清晰易懂的状态信息。 我们需要定义一个枚举类型,以满足业务中的审核状态需求。例如,我们可以创建一个名为`AuditEnum`的枚举: ```csharp public enum AuditEnum { [Description("未送审")] Holding = 0, [Description("审核中")] Auditing = 1, [Description("审核通过")] Pass = 2, [Description("驳回")] Reject = 3 } ``` 在这个枚举中,我们使用了`DescriptionAttribute`来自定义每个枚举值的中文描述。`DescriptionAttribute`是C#中的元数据特性,允许我们附加额外的信息到类、方法、属性等元素上。在这里,它被用来存储每个状态的中文描述。 为了在实际应用中获取这些中文描述,我们需要自定义一个服务类,比如`EnumService.cs`,包含一个静态方法`GetDescription()`,该方法接收一个枚举值,并返回其对应的描述: ```csharp public class EnumService { public static string GetDescription(Enum obj) { string objName = obj.ToString(); Type t = obj.GetType(); FieldInfo fi = t.GetField(objName); DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); return arrDesc[0].Description; } } ``` 这个方法通过反射获取枚举值的字段信息,并从中提取`DescriptionAttribute`的描述内容。 接下来,当需要在UI上展示枚举值时,我们调用`EnumService.GetDescription()`。以ASP.NET为例,假设有一个`Repeater`控件用于显示审核状态,我们可以在`OnItemDataBound`事件处理程序中动态设置`Literal`控件的文本: ```csharp protected void AuditRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs arg) { if (arg.Item.ItemType == ListItemType.Item) { Literal audit = arg.Item.FindControl("AuditText") as Literal; AuditEnum ae = AuditEnum.Pass; // 根据项目的实际情况赋值 audit.Text = EnumService.GetDescription(ae); } } ``` 这样,当页面加载时,`AuditText`控件将显示与`ae`对应的中文描述,而不是枚举的原始值。 总结来说,要在C#中实现枚举类型支持显示中文,我们需要: 1. 定义枚举并使用`DescriptionAttribute`添加中文描述。 2. 创建一个服务类,如`EnumService`,提供一个方法获取枚举值的描述。 3. 在UI层调用该服务类的方法,将枚举值转换为对应的中文描述。 通过这种方式,我们可以确保枚举类型的用户界面友好性,使得非开发人员也能轻松理解系统状态,从而提升用户体验。同时,这样的设计也保持了代码的清晰和可维护性。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 4
- 资源: 917
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 打包和分发Rust工具.pdf
- SQL中的CREATE LOGFILE GROUP 语句.pdf
- C语言-leetcode题解之第172题阶乘后的零.zip
- C语言-leetcode题解之第171题Excel列表序号.zip
- C语言-leetcode题解之第169题多数元素.zip
- ocr-图像识别资源ocr-图像识别资源
- 图像识别:基于Resnet50 + VGG16模型融合的人体细胞癌症分类模型实现-图像识别资源
- C语言-leetcode题解之第168题Excel列表名称.zip
- C语言-leetcode题解之第167题两数之和II-输入有序数组.zip
- C语言-leetcode题解之第166题分数到小数.zip
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)