构造函数什么时候运行?用一个示例来try 一下:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Creating MyClass instance");
MyClass mc = new MyClass();
Console.WriteLine("Setting value in MyClass instance");
mc.Value = 1;
Console.WriteLine("Getting attributes for MyClass type");
object[] attributes = typeof(MyClass).GetCustomAttributes(true);
}
}
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
public MyAttribute()
{
Console.WriteLine("Running constructor");
}
}
[MyAttribute]
class MyClass
{
public int Value { get; set; }
}
输出是什么?
Creating MyClass instance
Setting value in MyClass instance
Getting attributes for MyClass type
Running constructor
因此,当我们开始判断属性时,就会运行属性构造函数.请注意,属性是从类型获取的,而不是从类型的实例获取的.