Language Basics C#

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
  Example17_4.cs illustrates the GetCustomAttributes method
*/
using System;
public class Example17_4 
{
    public static void Main() 
    {
        // retrieve all attributes of Class1
        Console.WriteLine("Class1 attributes: ");
        object[] aAttributes = Attribute.GetCustomAttributes(
            typeof(Class1));
        foreach (object attr in aAttributes)
        {
            Console.WriteLine(attr);
        }
    }
}
// declare an attribute named UnitTest
// UnitTest.Written is either true or false
public class UnitTest : Attribute
{
    bool bWritten;
    public bool Written()
    {
        return bWritten;
    }
    public UnitTest(bool Written)
    {
        bWritten = Written;
    }
}
// declare another attribute named LifeCycle
// LifeCycle.Stage returns a string
public class LifeCycle : Attribute
{
    string sStage;
    public string Stage()
    {
        return sStage;
    }
    public LifeCycle(string Stage)
    {
        sStage = Stage;
    }
}
// apply the attribues to a class
[UnitTest(true)]
[LifeCycle("Coding")]
public class Class1
{
}