ref: http://www.uml.org.cn/net/200810135.asp

ref: http://blog.csdn.net/okvee/article/details/2610349

注意这么几个问题:

1. Attribute和Property的区别

2. Attribute在编译中就有了,与面向对象中的多态不一样

3. 常用的Attribute: AttributeUsage, Flags, DllImport, Serializable, Conditional, 自定义特性

4. 可以通过反射来获取信息

5. Attribute本质上是一个类

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using MySql.Data;
 using MySql.Data.Entity;
 using MySql.Data.MySqlClient;
 using System.IO;
 using System.Data;
 using System.Diagnostics;
 using System.Runtime.InteropServices;
 using System.Reflection;

 namespace test4
 {
     [Flags]
     public enum Animal
     {
         Dog = 0x0001,
         Cat = 0x0002,
         Duck = 0x0004,
         Chicken = 0x0008
     }
     [AttributeUsage(AttributeTargets.Class)]
     public class VersionAttribute : Attribute
     {
         public string Name { get; set; }
         public string Date { get; set; }
         public string Description { get; set; }
     }
     [Version(Name = "yingzhongwen", Date = "2015-06-25", Description = "yingzhongwen's class")]
     public class MyClass
     {
         public void SayHello()
         {
             Console.WriteLine("Hello, my .NET world.");
         }
     }
     class Program
     {
         [DllImport("User32.dll")]
         public static extern int MessageBox(int hParent, string msg, string caption, int type);
         static void Main(string[] args)
         {
             var info = typeof(MyClass);
             var classAttribute = (VersionAttribute)Attribute.GetCustomAttribute(info, typeof(VersionAttribute));
             Console.WriteLine(classAttribute.Name);
             Console.WriteLine(classAttribute.Date);
             Console.WriteLine(classAttribute.Description);
             object obj = Activator.CreateInstance(typeof(MyClass));
             MethodInfo mi = (typeof(MyClass)).GetMethod("SayHello");
             mi.Invoke(obj, null);

             Animal animals = Animal.Cat | Animal.Dog;
             Console.WriteLine(animals.ToString());
             Console.WriteLine((MessageBox(, )));
         }
     }
 }

.NET: C#: Attribute的更多相关文章

  1. [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute

    剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...

  2. JavaScript特性(attribute)、属性(property)和样式(style)

    最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...

  3. [C#] C# 知识回顾 - 特性 Attribute

    C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...

  4. js attribute 和 jquery attr 方法

    attribute 是原生js dom 对象上的一个属性,这个属性有很多子属性,比如 isId(判断属性是否是Id) , name (获取属性名称) , value (获取属性值),attribute ...

  5. 【.net 深呼吸】自定义特性(Attribute)的实现与检索方法

    在.net的各个语言中,尤其是VB.NET和C#,都有特性这一东东,具体的概念,大家可以网上查,这里老周说一个非标准的概念——特性者,就是对象的附加数据.对象自然可以是类型.类型成员,以及程序集. 说 ...

  6. angular2系列教程(四)Attribute directives

    今天我们要讲的是ng2的Attribute directives.顾名思义,就是操作dom属性的指令.这算是指令的第二课了,因为上节课的components实质也是指令. 例子

  7. 学会给你的类(及成员)来定制一套自己的Attribute吧

    在通过Visual Studio创建的C#程序集中,都包含了一个AssemblyInfo.cs的文件,在这个文件中,我们常常会看到这样的代码 [assembly: AssemblyTitle(&quo ...

  8. Attribute操作的性能优化方式

    Attribute是.NET平台上提供的一种元编程能力,可以通过标记的方式来修饰各种成员.无论是组件设计,语言之间互通,还是最普通的框架使 用,现在已经都离不开Attribute了.迫于Attribu ...

  9. SharePoint 2016 配置向导报错 - The 'ListInternal' attribute is not allowed

    前言 配置SharePoint 2016的配置向导中,第三步创建配置数据库报错,然后百度.谷歌了一下,都没有解决,自己看日志搞定,也许会有人遇到类似问题,分享一下. 1.配置向导的错误截图,如下图: ...

  10. C# 知识特性 Attribute

    C#知识--获取特性 Attribute 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,可在运行时使用"反射"查询 ...

随机推荐

  1. sublimtext2 资源

    https://github.com/qljiong/soda-theme/blob/master/README.md http://my.oschina.net/ruochenchen/blog/9 ...

  2. MySQL-中文全文检索

    一.概述 MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度. 二.语法 1 2 MATCH (col1,col2,...) AGAINST (exp ...

  3. Redis学习笔记(8)-发布/订阅

    package cn.com; import java.util.List; import redis.clients.jedis.Jedis; public class Redis_PubSub { ...

  4. 通过runtime替换系统类实现的代码(从github开源库fdstackview中摘录)

    其中部分代码为汇编:由此可见oc的runtime的灵活性和能力.此代码仅供参考 // ---------------------------------------------------- // R ...

  5. 【Java 基础篇】【第四课】初识类

    看看Java中如何定义一个类,然后用来调用的,这个比较简单,直接看代码吧. 我发现的类和C++不一样的地方: 1.Java中类定义大括号后没有分号: 2.好像没有 public.private等关键字 ...

  6. js严格模式“use strict”

    js的严格模式会放弃js中的一些不正规的写法,参考 http://www.cnblogs.com/God-Shell/p/3139329.html: 使用声明"use  strict&quo ...

  7. 如何方便的控制css3动画开始时间点与持续时间

    一般我们在控制css3 animate动画时可以通过简写以减少代码量,只要在需要动画的元素上追加一下类名就可以了,如下例子 /*淡入并向上移动一点位置出现*/ .fadeInUp{ -webkit-a ...

  8. java 中集合和数组互相转换

    package test; import java.util.Arrays;import java.util.List; /** * Created by Administrator on 2016/ ...

  9. int和long int的区别

    16位系统:long是4字节,int是2字节32位系统:long是4字节,int是4字节64位系统:long是8字节,int是4字节 long long 占8个字节

  10. LNMP 环境发布项目

    发布地址 /srv/www/wx 默认mysql 外部访问权限关闭,需开启 另:注意数据库没有导入,index.php会是空白 chmod -R 777 /var var的权限就变成777,var下的 ...