您的位置:首页 > 编程语言 > C#

.NET: C#: Attribute

2015-06-25 15:24 429 查看
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(0, "How to use attribute in .NET", "anytao_net", 0)));
}
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: