更新时间:2017-09-24 12:52:01浏览次数:1+次
/*
特性就是为目标元素, 可以是数据集, 模块, 类, 属性, 方法, 甚至是函数参数等加入附加信息, 类似于注释, 但是可以在运行期间以反射的方式获得。
* 特性主要应用在序列化, 编译器指令, 设计模式, ORM等方面
*/
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,
Inherited = true)]
public class MyselfAttribute : System.Attribute
{
public string Name { get; set; }
public int Age { get; set; }
public string Memo { get; set; }
public MyselfAttribute()
{
}
public MyselfAttribute(string name, int age)
{
Name = name;
Age = age;
}
public void ShowName()
{
Console.WriteLine("Hello, {0}", Name == null ? null : "world.");
}
}
[MyselfAttribute("Ryan", 22)]
public class mytest
{
[MyselfAttribute("Ryan", 22)]
public void SayHello()
{
Console.WriteLine("Hello, asp.net ");
}
}
class Program
{
static void Main(string[] args)
{
//mytest test = new mytest();
//test.SayHello();
Type tp = typeof(mytest);
//获取成员方法的反射信息
MemberInfo methof_info = tp.GetMethod("SayHello");
MyselfAttribute myAttribute = (MyselfAttribute)Attribute.GetCustomAttribute(methof_info, typeof(MyselfAttribute));
if (myAttribute != null)
{
Console.WriteLine("你查看的是{0}的反射信息", methof_info.Name);
Console.WriteLine("Name: {0}", myAttribute.Name);
Console.WriteLine("Age: {0}", myAttribute.Age);
Console.WriteLine("Memo of {0} is {1}", myAttribute.Name, myAttribute.Memo);
myAttribute.ShowName();
}
//获取类的反射信息
MemberInfo info = tp;
MyselfAttribute class_myAttribute = (MyselfAttribute)Attribute.GetCustomAttribute(info, typeof(MyselfAttribute));
if (class_myAttribute != null)
{
Console.WriteLine("你查看的是{0}的反射信息", info.Name);
Console.WriteLine("Name: {0}", class_myAttribute.Name);
Console.WriteLine("Age: {0}", class_myAttribute.Age);
Console.WriteLine("Memo of {0} is {1}", class_myAttribute.Name, class_myAttribute.Memo);
class_myAttribute.ShowName();
}
Console.Read();
}
}
资料:
相关资讯