public static void Main()
PrintVehicleInfo(typeof(Motorcycle));
PrintVehicleInfo(typeof(HorseAndBuggy));
PrintVehicleInfo(typeof(Winnebago));
private static void PrintVehicleInfo(System.Type t)
System.Console.WriteLine("Vehicle information for {0}", t);
System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);
foreach (System.Attribute attr in attrs)
if (attr is VehicleDescriptionAttribute)
VehicleDescriptionAttribute a = (VehicleDescriptionAttribute)attr;
System.Console.WriteLine(" Description: {1:f}", a.TypeId, a.Description);
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct,
public sealed class VehicleDescriptionAttribute : System.Attribute
public string Description { get; set; }
public VehicleDescriptionAttribute(string vehicalDescription)
Description = vehicalDescription;
public VehicleDescriptionAttribute(){ }
[VehicleDescription(Description = "My rocking Harley")]
[ObsoleteAttribute("Use another vehicle!")]
[VehicleDescription("The old gray mare, she ain't what she used to be...")]
public class HorseAndBuggy
[VehicleDescription("A very long, slow, but feature-rich auto")]