3 回答
TA贡献1911条经验 获得超7个赞
在属性构造函数内设置调试器断点,并编写一些反射代码以读取那些属性。您会注意到,只有从relfection API返回属性对象后,才能创建属性对象。属性是每个类的。它们是元数据的一部分。
看看这个:
Program.cs
using System;
using System.Linq;
[My(15)]
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Program started");
var ats =
from a in typeof(Program).GetCustomAttributes(typeof(MyAttribute), true)
let a2 = a as MyAttribute
where a2 != null
select a2;
foreach(var a in ats)
Console.WriteLine(a.Value);
Console.WriteLine("Program ended");
Console.ReadLine();
}
}
MyAttribute.cs
using System;
[AttributeUsage(validOn : AttributeTargets.Class)]
public class MyAttribute : Attribute
{
public MyAttribute(int x)
{
Console.WriteLine("MyAttribute created with {0}.", x);
Value = x;
}
public int Value { get; private set; }
}
结果
Program started
MyAttribute created with 15.
15
Program ended
但不必担心属性构造函数的性能。它们是反思的最快部分:-P
- 3 回答
- 0 关注
- 490 浏览
添加回答
举报