不可不知的C#基础应用-- Extension扩展方法
背景前几天有同事问到我一个简单的功能, 就是当你使用枚举时如何给每个一元素增加描述字符串并且可以很容易的读取出来. 比如有一个枚举类型是列出对一个问题给出的选项(例如: 同意?不同意?中立?): public enum AssessmentAnswer{ Strongly_Disagree = 1, Disagree = 2, Neutral = 3, Agree = 4, Strongly_Agree = 5 } 当选择不同的答案时, 希望得到一些描述性的语句比方说: 1. "强烈的反对" 2. "反对" 3. "持中立观点" 4. "同意" 5. "完全的同意" 当然你可以建立一个数据库表格,存放这些信息, 但是我想起几年前,我在网上下载一个 EnumDescription 源码(忘记了是在哪里下载的), 就可以实现这一功能. 让我们一起来看看是怎么样用 Extension 做到的: 实现首先定义一个EnumDescription 类: public class EnumDescription : Attribute{ public string Text { get { return _text; } } private string _text; public EnumDescription(string text) { _text = text; } } 注意它的父类是Attribute, 因为我们希望将描述的语句作为每一个对应元素的特性. 然后新建一个文件,命名EnumExtensions.cs public static class EnumExtensions 在这里我们定义了一个扩展函数ToDescription, 就像所有的扩展函数一样,它的参数是类似(this …), 这个函数首先用GetType 得到了当前枚举的类型, 然后借助 GetMember按照元素的名字(值), 得到这个特定的元素, 最后用GetCustomAttributes 得到描述的内容.
这个扩展函数实现后,我们可以修改枚举的定义,加入描述: public enum AssessmentAnswer [EnumDescription("反对")] |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |