什么时候运行?它是否对我应用它的每个对象都运行一次,还是只运行一次?它可以做任何事情,或者其动作受到限制吗?
构造函数何时运行?尝试一个示例:
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
因此,当我们开始检查属性时,将运行属性构造函数。请注意,属性是从类型而不是类型的实例中获取的。