加特性类应用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
using System.Reflection;
namespace AsncyHandle
{
[AttributeUsage(AttributeTargets.All,AllowMultiple=true,Inherited=false)]
class ClassMsgAttribute : Attribute
{
public string Msg = "";
public ClassMsgAttribute()
{ }
public ClassMsgAttribute(string s)
{
Msg = s;
}
}
[ClassMsg("这是包含人类姓名类")]
class Person
{
string name;
[ClassMsg("这是存储人类信息字段")]
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
//获取加特性类的实例Type
Type t = Type.GetType("AsncyHandle.Person");
//获取加在程序集加特性类 的 特性类实例
object[] objs = t.GetCustomAttributes(false);
//打出特性类的实例方法
foreach (ClassMsgAttribute cl in objs)
{
Console.WriteLine(cl.Msg);
}
//获取类的方法
MemberInfo[] info = t.GetMembers();
foreach (MemberInfo f in info)
{
object[] bs = f.GetCustomAttributes(false);
//打出方法的特性类消息
for (int i = 0; i < bs.Length; i++)
{
if (bs[i] is ClassMsgAttribute)
{
ClassMsgAttribute b = bs[i] as ClassMsgAttribute;
Console.WriteLine(b.Msg);
}
}
}
}
}
}