标签:
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本质上是一个类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using MySql.Data; 6 using MySql.Data.Entity; 7 using MySql.Data.MySqlClient; 8 using System.IO; 9 using System.Data; 10 using System.Diagnostics; 11 using System.Runtime.InteropServices; 12 using System.Reflection; 13 14 namespace test4 15 { 16 [Flags] 17 public enum Animal 18 { 19 Dog = 0x0001, 20 Cat = 0x0002, 21 Duck = 0x0004, 22 Chicken = 0x0008 23 } 24 [AttributeUsage(AttributeTargets.Class)] 25 public class VersionAttribute : Attribute 26 { 27 public string Name { get; set; } 28 public string Date { get; set; } 29 public string Description { get; set; } 30 } 31 [Version(Name = "yingzhongwen", Date = "2015-06-25", Description = "yingzhongwen‘s class")] 32 public class MyClass 33 { 34 public void SayHello() 35 { 36 Console.WriteLine("Hello, my .NET world."); 37 } 38 } 39 class Program 40 { 41 [DllImport("User32.dll")] 42 public static extern int MessageBox(int hParent, string msg, string caption, int type); 43 static void Main(string[] args) 44 { 45 var info = typeof(MyClass); 46 var classAttribute = (VersionAttribute)Attribute.GetCustomAttribute(info, typeof(VersionAttribute)); 47 Console.WriteLine(classAttribute.Name); 48 Console.WriteLine(classAttribute.Date); 49 Console.WriteLine(classAttribute.Description); 50 object obj = Activator.CreateInstance(typeof(MyClass)); 51 MethodInfo mi = (typeof(MyClass)).GetMethod("SayHello"); 52 mi.Invoke(obj, null); 53 54 Animal animals = Animal.Cat | Animal.Dog; 55 Console.WriteLine(animals.ToString()); 56 Console.WriteLine((MessageBox(0, "How to use attribute in .NET", "anytao_net", 0))); 57 } 58 } 59 }
标签:
原文地址:http://www.cnblogs.com/yingzhongwen/p/4600079.html