Sam*_*eff 23
Type.GetCustomAttributes()调用时会加载属性.如果您只是实例化类或甚至获取类型,则尚未加载属性.
看这个例子:
class Program
{
static void Main()
{
Console.WriteLine("Calling AttributeLoadTest.TestStatic():");
AttributeLoadTest.TestStatic();
Console.WriteLine("Loading class");
var x = new AttributeLoadTest();
Console.WriteLine("Loading type..");
var t = typeof (AttributeLoadTest);
Console.WriteLine("Calling GetCustomAttributes()");
var ats = t.GetCustomAttributes(false);
}
}
[ConsoleTest]
class AttributeLoadTest
{
public static void TestStatic()
{
}
}
[AttributeUsage(AttributeTargets.Class)]
class ConsoleTestAttribute : Attribute
{
public ConsoleTestAttribute()
{
Console.WriteLine("ConsoleTestAttribute Constructor");
}
}
Run Code Online (Sandbox Code Playgroud)
打印出:
调用AttributeLoadTest.TestStatic():
加载课程
装货类型..
调用GetCustomAttributes()
ConsoleTestAttribute构造函数
因此,调用静态方法,实例化类,获取类型,不会实例化该属性.打电话GetCustomAttributes().
| 归档时间: |
|
| 查看次数: |
3034 次 |
| 最近记录: |