一、创建属性

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor, AllowMultiple = true, Inherited = true)]
//AttributeTargets:属性应用到的目标类型。AllowMultiple:是否允许一个元素应用多个此属性。Inherited:属性能否有派生类继承。
public class CodeStatusAttribute : Attribute
{
private string status;
public CodeStatusAttribute(string status)//构造函数为位置参数
{
this.status = status;
}
public string Tester { set; get; }//属性和公共字段为命名参数
public string Coder { set; get; } public override string ToString()
{
return status;
}
}

二、应用属性

//1、使用单个属性
[CodeStatus("a版")]
public class Tringe
{ } //2、使用多个属性
[CodeStatus("b版", Coder = "小李")]
[CodeStatus("b版", Coder = "小王")]
//也可以[CodeStatus("aa",Coder="小李"),CodeStatus("aa",Coder="小王")]
public class Square
{ } //3、使用位置参数和命名参数
//type表示此属性与什么元素关联,可能有:assembly,field,method,param,property,return,moudule,event,type等。。
[type: CodeStatus("最终版", Coder = "小李", Tester = "老李")]
public class Circle
{
[CodeStatus("最终版", Coder = "小李", Tester = "老李")]
public Circle()
{ }
}

三、反射属性

//1、获取类上的属性。
Type t = typeof(Circle);
Attribute[] attArr = Attribute.GetCustomAttributes(t, typeof(CodeStatusAttribute));
//或
object[] attArr1 = t.GetCustomAttributes(typeof(CodeStatusAttribute), true); //2、获取成员上属性
Attribute[] attArr3 = t.GetConstructors()[0].GetCustomAttributes().ToArray();//构造函数,获取字段GetField("..") //3、遍历
foreach (Attribute attr in attArr3)
{
CodeStatusAttribute item = (CodeStatusAttribute)attr;
Console.Write(item.ToString() + item.Coder + item.Tester);
}

四、Net内置属性

[Condeitonal] //条件控制
[Obsolete] //废弃属性
[Serializable]//可序列化属性
[AssemblyDelaySign] //程序集延迟签名

最新文章

  1. Http client 请求
  2. 【python】jiraAPI使用教程 自动创建jira问题单并置状态为OPEN
  3. SharePoint 2013 Nintex Workflow 工作流帮助(九)
  4. [MODx] 3. Working with chunks, TV, Category
  5. 关于关闭Eclipse的控制台自动跳出
  6. ARM-Linux S5PV210 UART驱动(2)---- 终端设备驱动
  7. java 后台线层也叫守护线层
  8. Hadoop数据操作系统YARN全解析
  9. NET Core 环境搭建和命令行CLI入门
  10. 【Python之路】第三篇--Python基本数据类型
  11. 1.Java关键字和保留字
  12. wstngfw IPsec 站点到站点连接示例
  13. 大于2t的磁盘分区,并格式化ext4挂载
  14. 【第十二章】 springboot + mongodb(复杂查询)
  15. c++中的函数重载
  16. IOS sqlite数据库增删改查
  17. thinkphp表单验证
  18. orcal 锁表
  19. sql传统的拼接带来的危害
  20. 【预处理】【分类讨论】Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains

热门文章

  1. kotlin基本数据类型
  2. JS中根据某个值进行大小排序
  3. [转载]Oracle中动态SQL详解
  4. c#,简单的冒泡排序
  5. Selenium问题集锦
  6. Python 用hashlib求中文字符串的MD5值 (转自 haungrui的专栏)
  7. IP地址 子网掩码 网络地址 主机地址 广播地址
  8. time() 函数时间不同步问题
  9. 待续:s5p6818移植 uboot 2014.07 移植
  10. docker部署Eurake服务,服务节点无法注册服务