自定义枚举类型注释属性,并在程序中获取
来源:互联网 发布:双色球大数据分析软件 编辑:程序博客网 时间:2024/05/17 17:14
//方法:
public static string GetEnumDescription<TEnum>(object value)
{
Type enumType = typeof(TEnum);
if (!enumType.IsEnum)
{
throw new ArgumentException("enumItem requires a Enum ");
}
var name = Enum.GetName(enumType, Convert.ToInt32(value));
if (name == null)
return string.Empty;
object[] objs = enumType.GetField(name).GetCustomAttributes(typeof(DescriptionAttribute), false);
if (objs == null || objs.Length == 0)
{
return string.Empty;
}
else
{
DescriptionAttribute attr = objs[0] as DescriptionAttribute;
return attr.Description;
}
}
// 调用:
string desc=GetEnumDescription<Filter>(Filter.Public); //得到Filter(enum)中,为Public 所定义的描述信息.
// Filter枚举的描述:
public enum Filter
{
/// <summary>
/// 全部
/// </summary>
[Description("全部")]
All = 1,
/// <summary>
/// 已分配
/// </summary>
[Description("已分配")]
Assigned = 2,
/// <summary>
/// 待分配
/// </summary>
[Description("待分配")]
Assigning = 3,
/// <summary>
/// 返回调整
/// </summary>
[Description("返回调整")]
Adjusting = 4,
/// <summary>
/// 已拒绝
/// </summary>
[Description("已拒绝")]
Reject = 5,
/// <summary>
/// 公共
/// </summary>
[Description("公共")]
Public = 6,
/// <summary>
/// Sales把发回调整的客户编辑后不先提交只保存信息
/// </summary>
[Description("草稿")]
Draft = 7,
/// <summary>
/// 排队
/// </summary>
[Description("排队")]
InQueue = 8,
/// <summary>
/// 发放给大区经理审批
/// </summary>
[Description("审批转移")]
ToManagerCheck = 9,
/// <summary>
/// 不返回任何值的条件
/// </summary>
None = -1,
}
//4, DescriptionAttribute 的定义:
public class DescriptionAttribute : Attribute
{
public DescriptionAttribute(string desc);
public string Description { get; set; }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public partial class 枚举_Enum_自定义属性 : System.Web.UI.Page
{
protected void Page_Load(object sender , EventArgs e)
{
string desc = GetEnumDescription<MyColorEnum>(MyColorEnum.red);
//desc = GetEnumDescription<MyColorEnum>(1);
Response.Write(desc);
}
public enum MyColorEnum
{
[DescriptionAttribute("红色")]
red ,
[DescriptionAttribute("蓝色")]
blue ,
[DescriptionAttribute("绿色")]
green ,
[DescriptionAttribute("白色")]
white
}
//其实这个属性已经有了:
//public class DescripteAttribute : Attribute
//{
// public DescripteAttribute(string desc)
// {
// this._description = desc;
// }
// private string _description;
// public string Description
// {
// get
// {
// return this._description;
// }
// set
// {
// this._description = value;
// }
// }
//}
/// <summary>
/// 获取枚举项的描述
/// </summary>
/// <param name="enumItem">具体枚举类型</param>
/// <returns></returns>
public static string GetEnumDescription<TEnum>(object value)
{
Type enumType = typeof(TEnum);
if(!enumType.IsEnum)
{
throw new ArgumentException("不是枚举类型");
}
string enumItem = Enum.GetName(enumType , Convert.ToInt32(value));
if(enumItem == null)
{
return string.Empty;
}
object[] objs = enumType.GetField(enumItem).GetCustomAttributes(typeof(DescriptionAttribute) , false);
if(objs == null || objs.Length == 0)
{
return string.Empty;
}
else
{
DescriptionAttribute attr = objs[0] as DescriptionAttribute;
return attr.Description;
}
}
}
public static string GetEnumDescription<TEnum>(object value)
{
Type enumType = typeof(TEnum);
if (!enumType.IsEnum)
{
throw new ArgumentException("enumItem requires a Enum ");
}
var name = Enum.GetName(enumType, Convert.ToInt32(value));
if (name == null)
return string.Empty;
object[] objs = enumType.GetField(name).GetCustomAttributes(typeof(DescriptionAttribute), false);
if (objs == null || objs.Length == 0)
{
return string.Empty;
}
else
{
DescriptionAttribute attr = objs[0] as DescriptionAttribute;
return attr.Description;
}
}
// 调用:
string desc=GetEnumDescription<Filter>(Filter.Public); //得到Filter(enum)中,为Public 所定义的描述信息.
// Filter枚举的描述:
public enum Filter
{
/// <summary>
/// 全部
/// </summary>
[Description("全部")]
All = 1,
/// <summary>
/// 已分配
/// </summary>
[Description("已分配")]
Assigned = 2,
/// <summary>
/// 待分配
/// </summary>
[Description("待分配")]
Assigning = 3,
/// <summary>
/// 返回调整
/// </summary>
[Description("返回调整")]
Adjusting = 4,
/// <summary>
/// 已拒绝
/// </summary>
[Description("已拒绝")]
Reject = 5,
/// <summary>
/// 公共
/// </summary>
[Description("公共")]
Public = 6,
/// <summary>
/// Sales把发回调整的客户编辑后不先提交只保存信息
/// </summary>
[Description("草稿")]
Draft = 7,
/// <summary>
/// 排队
/// </summary>
[Description("排队")]
InQueue = 8,
/// <summary>
/// 发放给大区经理审批
/// </summary>
[Description("审批转移")]
ToManagerCheck = 9,
/// <summary>
/// 不返回任何值的条件
/// </summary>
None = -1,
}
//4, DescriptionAttribute 的定义:
public class DescriptionAttribute : Attribute
{
public DescriptionAttribute(string desc);
public string Description { get; set; }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public partial class 枚举_Enum_自定义属性 : System.Web.UI.Page
{
protected void Page_Load(object sender , EventArgs e)
{
string desc = GetEnumDescription<MyColorEnum>(MyColorEnum.red);
//desc = GetEnumDescription<MyColorEnum>(1);
Response.Write(desc);
}
public enum MyColorEnum
{
[DescriptionAttribute("红色")]
red ,
[DescriptionAttribute("蓝色")]
blue ,
[DescriptionAttribute("绿色")]
green ,
[DescriptionAttribute("白色")]
white
}
//其实这个属性已经有了:
//public class DescripteAttribute : Attribute
//{
// public DescripteAttribute(string desc)
// {
// this._description = desc;
// }
// private string _description;
// public string Description
// {
// get
// {
// return this._description;
// }
// set
// {
// this._description = value;
// }
// }
//}
/// <summary>
/// 获取枚举项的描述
/// </summary>
/// <param name="enumItem">具体枚举类型</param>
/// <returns></returns>
public static string GetEnumDescription<TEnum>(object value)
{
Type enumType = typeof(TEnum);
if(!enumType.IsEnum)
{
throw new ArgumentException("不是枚举类型");
}
string enumItem = Enum.GetName(enumType , Convert.ToInt32(value));
if(enumItem == null)
{
return string.Empty;
}
object[] objs = enumType.GetField(enumItem).GetCustomAttributes(typeof(DescriptionAttribute) , false);
if(objs == null || objs.Length == 0)
{
return string.Empty;
}
else
{
DescriptionAttribute attr = objs[0] as DescriptionAttribute;
return attr.Description;
}
}
}
0 0
- 自定义枚举类型注释属性,并在程序中获取
- 自定义枚举以及如何在反射中获取枚举值
- 自定义控件中使用枚举类型的属性(原创)
- 自定义控件中使用枚举类型的属性(原创)
- 在QML中使用自定义属性类型
- 反射获取枚举的属性注释
- 获取枚举类型Enum的注释内容。
- c# 自定义属性 属性类型为枚举
- 枚举类型的自定义属性取得
- execvp:在程序中调子程序并获取返回值
- 使用js在IE9中获取标签自定义属性
- 在自定义view中获取android layout_width等属性值
- 在tp中数据去重并获取自定义字段
- Java中Random自定义的枚举类型
- HTML标签自定义属性,并怎么获取
- 自定义html标签属性并获取
- 在VS2008中创建自定义控件(十)添加枚举型属性
- 在VS2008中创建自定义控件(十)添加枚举型属性
- CMS收集器的一些参数
- linux设备驱动归纳总结(八):2.match.probe.remove
- URLClassLoader源码笔记
- NSString / NSData / char* 类型之间的转换
- LoadLibraryA加载dll失败
- 自定义枚举类型注释属性,并在程序中获取
- 创建ATL工程及使用C++测试COM组件
- 原型模式-1
- Objective-C Foundation框架中的NSObject对象
- ngrok工具的介绍与使用,以及使用此工具时注意的事项
- windows 下 redis 安装配置
- ant java命令 官方文档
- [LeetCode]Unique Paths
- JNI 共享内存