private static void ReflectOnAttributesUsingEarlyBinding() { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("=> Reflect on Attributes Using Early Binding"); Type t = typeof(Winnebago); object[] attrs = t.GetCustomAttributes(false); foreach (var v in attrs) { VehicleDescriptionAttribute a = v as VehicleDescriptionAttribute; if (a != null) { Console.WriteLine($"-> Description <{a.Description}>"); } else { Console.WriteLine("-> Not a VehicleDescriptionAttribute"); } } }
static void CheckAttributes(Type type, ConsoleColor color) { Console.ForegroundColor = color; Console.WriteLine($"-> Class <{type.Name}>, serializable <{type.IsSerializable}>"); Console.WriteLine($"Class attributes:"); foreach (var attr in type.GetCustomAttributes(true)) { VehicleDescriptionAttribute v = attr as VehicleDescriptionAttribute; if (v != null) { Console.WriteLine($" Description <{v.Description}>"); } ObsoleteAttribute o = attr as ObsoleteAttribute; if (o != null) { Console.WriteLine($" Obsolete attribute message <{o.Message}>, is error <{o.IsError}>"); } SerializableAttribute s = attr as SerializableAttribute; if (s != null) { Console.WriteLine($" Serializable default <{s.IsDefaultAttribute()}>"); } } Console.WriteLine($"Method attributes:"); foreach (var m in type.GetMethods()) { foreach (var a in m.GetCustomAttributes(true)) { VehicleDescriptionAttribute v = a as VehicleDescriptionAttribute; if (v != null) { Console.WriteLine($" Method <{m.Name}>: Description <{v.Description}>"); } } } }