.net 特性 Attribute
public sealed class RemarkAttribute : Attribute
{
public string Remark { get; set; } // 构造函数
public RemarkAttribute(string remark)
{
this.Remark = remark;
} /// <summary>
/// 获取枚举备注属性
/// </summary>
/// <param name="_enum">枚举类参数</param>
/// <returns>String</returns>
public static string GetEnumRemark(Enum _enum)
{
string result = string.Empty;
Type type = _enum.GetType();
FieldInfo fd = type.GetField(_enum.ToString());
if (fd != null)
{
object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false);
foreach (RemarkAttribute attr in attrs)
result = attr.Remark;
}
return result;
} /// <summary>
/// 下拉列表绑定枚举属性值
/// </summary>
/// <param name="ddl">DropDownList</param>
/// <param name="_enum">枚举</param>
public static void DataBind(DropDownList ddl, Type _enum)
{
List<StructRemark> list = GetStructRemarkList(_enum);
foreach (StructRemark item in list)
{
ListItem listItem = new ListItem();
listItem = new ListItem(item.FieldText, item.FieldValue.ToString());
ddl.Items.Add(listItem);
}
} /// <summary>
/// 下拉列表绑定枚举属性值(有默认项)
/// </summary>
/// <param name="ddl">DropDownList</param>
/// <param name="_enum">枚举</param>
public static void DataBind(DropDownList ddl, Type _enum, string firstValue, string firstText)
{
List<StructRemark> list = GetStructRemarkList(_enum);
foreach (StructRemark item in list)
{
ListItem listItem = new ListItem();
listItem = new ListItem(item.FieldText, item.FieldValue.ToString());
ddl.Items.Add(listItem);
}
ddl.Items.Insert(0, new ListItem(firstText, firstValue));
} /// <summary>
/// 把枚举转换成DataTable
/// </summary>
/// <param name="_enum">枚举</param>
public static DataTable GetDataTable(Type _enum)
{
DataTable dt = new DataTable();
DataColumn dc = null;
dc = dt.Columns.Add("Value", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Text", Type.GetType("System.String"));
DataRow dr = null;
List<StructRemark> list = GetStructRemarkList(_enum);
foreach (StructRemark item in list)
{
dr = dt.NewRow();
dr["Value"] = item.FieldValue;
dr["Text"] = item.FieldText;
dt.Rows.Add(dr);
}
return dt;
} /// <summary>
/// 获取枚举备注属性集
/// </summary>
/// <param name="_enum">枚举</param>
/// <returns>枚举属性结构</returns>
public static List<StructRemark> GetStructRemarkList(Type _enum)
{
List<StructRemark> list = new List<StructRemark>();
StructRemark model = new StructRemark();
foreach (int value in Enum.GetValues(_enum))
{
model.FieldValue = value;
FieldInfo fd = _enum.GetField(Enum.GetName(_enum, value));
string name = string.Empty;
if (fd == null)
name = "";
object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false);
foreach (RemarkAttribute attr in attrs)
{
name = attr.Remark;
}
model.FieldText = name;
list.Add(model);
}
return list;
} /// <summary>
/// 枚举属性结构
/// </summary>
public struct StructRemark
{
public int FieldValue;//值
public string FieldText;//键
}
}
特性 Attribute:
公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
我们简单的总结为:定制特性attribute,本质上是一个类,其为目标元素提供关联附加信息,并在运行期以反射的方式来获取附加信息。具体的特性实现方法,在接下来的讨论中继续深入。
自定义特性 public sealed class RemarkAttribute : Attribute 以Attribute Remark则表示你的特性
.net 特性 Attribute的更多相关文章
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...
- [C#] C# 知识回顾 - 特性 Attribute
C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...
- C# 知识特性 Attribute
C#知识--获取特性 Attribute 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,可在运行时使用"反射"查询 ...
- 区分元素特性attribute和对象属性property
× 目录 [1]定义 [2]共有 [3]例外[4]特殊[5]自定义[6]混淆[7]总结 前面的话 其实attribute和property两个单词,翻译出来都是属性,但是<javascript高 ...
- .Net内置特性Attribute介绍
特性Attribute概述 特性(Attribute)是一种特殊的类型,可以加载到程序集或者程序集的类型上,这些类型包括模块.类.接口.结构.构造函数.方法.字段等,加载了特性的类型称之为特性的目标. ...
- 【点滴积累】通过特性(Attribute)为枚举添加更多的信息
转:http://www.cnblogs.com/IPrograming/archive/2013/05/26/Enum_DescriptionAttribute.html [点滴积累]通过特性(At ...
- 理解特性attribute 和 属性property的区别 及相关DOM操作总结
查一下英语单词解释,两个都可以表示属性.但attribute倾向于解释为特质,而property倾向于解释私有的.这个property的私有解释可以更方便我们下面的理解. 第一部分:区别点 第一点: ...
- 如何获取类或属性的自定义特性(Attribute)
如何获取类或属性的自定义特性(Attribute) 问题说明: 在ActiveRecord或者其他的ORM等代码中, 我们经常可以看到自定义特性(Attribute)的存在(如下面的代码所示) [Pr ...
- C# 知识特性 Attribute,XMLSerialize,
C#知识--获取特性 Attribute 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,可在运行时使用“反射”查询特性,获取特性集合方 ...
- c#特性attribute:
特性是被编译到metadata中, 是提供给反射用的. 特性attribute:1 什么是attribute,和注释有什么区别 2 声明和使用attribute3 使用attribute完成扩展4 ...
随机推荐
- Android开发SQLite数据库的创建
package com.example.db; import android.content.Context; import android.database.sqlite.SQLiteDatabas ...
- 数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)
主要内容 1.标准输入输出和错误 2.管道命令和 grep, tr,sort, wc, cut,split,tee,sleep 标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0, ...
- 杂项-公司:星巴克百科-un
ylbtech-杂项-公司:星巴克百科 星巴克(Starbucks)是美国一家连锁咖啡公司的名称,1971年成立,是全球最大的咖啡连锁店,其总部坐落美国华盛顿州西雅图市.星巴克旗下零售产品包括30多款 ...
- php中,如何将编译后的代码,反编译回去。
编译后 <?php /*********************/ /* */ /* Version : 5.1.0 */ /* Author : RM */ /* Comment : 0712 ...
- python开发mysql:单表查询&多表查询
一 单表查询,以下是表内容 一 having 过滤 1.1 having和where select * from emp where id > 15; 解析过程;from > where ...
- Python Twisted系列教程2:异步编程初探与reactor模式
作者:dave@http://krondo.com/slow-poetry-and-the-apocalypse/ 译者:杨晓伟(采用意译) 这个系列是从这里开始的,欢迎你再次来到这里来.现在我们可 ...
- SMO是英文SQL Server Management Objects的缩写(上一篇文章的补充)
最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...
- vmware 仅主机模式 ip配置
首先关闭防火墙 主机(宿主机器 win7) 虚拟机(xp) 3..重要提示: 如果ping不通首先考虑防火墙的问题!!! vmware配置: nat模式下玩耍: 1. 配置nat的虚拟网卡: 2. ...
- OSCache安装
OSCache是一个基于web应用的组件,他的安装工作主要是对web应用进行配置,大概的步骤如下: 1. 下载.解压缩OSCachehttps://java.net/downloads/oscache ...
- myeclipse,eclipse设置编码格式的4种情况,以及遇见部分问题的解决办法。
(1).设置myeclipse工作空间的编码格式,作用范围最大 window-->preference-->general-->workspace-->text file en ...