c#枚举值增加特性说明(推荐)

c#枚举值增加特性说明(推荐),第1张

概述通过特性给一个枚举类型每个值增加一个字符串说明,用于打印或显示。自定义打印特性

通过特性给一个枚举类型每个值增加一个字符串说明,用于打印或显示。

自定义打印特性

[AttributeUsage(AttributeTargets.FIEld)]public class EnumdisplayAttribute : Attribute{ public EnumdisplayAttribute(string displayStr) {  display = displayStr; } public string display {  get;  private set; }}

打印特性定义很简单,只含有一个字符串属性。

定义一个枚举

public enum TestEnum{ [Enumdisplay("一")] one,[Enumdisplay("二")] two,three}

枚举类型one,two均增加了一个打印特性。

增加枚举扩展方法取得打印特性值

public static class TestEnumExtentions{ public static string display(this TestEnum t) {  var fIEldname = Enum.Getname(typeof(TestEnum),t);  var attributes = typeof(TestEnum).GetFIEld(fIEldname).GetCustomAttributes(false);  var enumdisplayAttribute = attributes.FirstOrDefault(p => p.GetType().Equals(typeof(EnumdisplayAttribute))) as EnumdisplayAttribute;  return enumdisplayAttribute == null ? fIEldname : enumdisplayAttribute.display; }}

获取枚举值对应的枚举filed字符串 var fIEldname = Enum.Getname(typeof(TestEnum),t);

获取filed对应的所有自定义特性集合 var attributes = typeof(TestEnum).GetFIEld(fIEldname).GetCustomAttributes(false);

获取EnumdisplayAttribute特性 var enumdisplayAttribute = attributes.FirstOrDefault(p => p.GetType().Equals(typeof(EnumdisplayAttribute))) as EnumdisplayAttribute;

如存在EnumdisplayAttribute特性返回其display值,否则返回filed字符串 return enumdisplayAttribute == null ? fIEldname : enumdisplayAttribute.display;

使用示例

class Program{ static voID Main(string[] args) {  TestEnum e = TestEnum.one;  Console.Writeline(e.display());  TestEnum e1 = TestEnum.three;  Console.Writeline(e1.display());  Console.ReadKey(); }}

输出:

一 three扩展说明

此方法不仅可以给枚举类型增加说明特性,亦可给自定义类型的属性,方法增加自定义特性。。

在使用反射使GetFIEld(string name) getmethod(string name) GetProperty(string name)等均需要字符串

在获取自定义类型属性或方法名称字符串时可以使用 nameof

public class T{ public voID Get() { } public int Num { get; set; }}T tt = new T();Console.Writeline(nameof(tt.Num));Console.Writeline(nameof(tt.Get));

以上所述是小编给大家介绍的c#枚举值增加特性说明(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的c#枚举值增加特性说明(推荐)全部内容,希望文章能够帮你解决c#枚举值增加特性说明(推荐)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1255882.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存