首页 > 代码库 > 一段关于测试和自定义Attribute的代码

一段关于测试和自定义Attribute的代码

来自《西夏普入门经典》

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace ConsoleApplication1{    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]    public class XXXAttribute : Attribute    {        public XXXAttribute(System.Type testCase)        {            TestCase = testCase;        }        public readonly System.Type TestCase;        public void Test()        {            object o = Activator.CreateInstance(TestCase);        }    }    public class TestAnObject    {        public TestAnObject()        {            SomeCodeOrOther scooby = new SomeCodeOrOther();            if (scooby.Do() != 999)                throw new Exception("Pesky Kids");        }    }    [XXX(typeof(TestAnObject))]    public class SomeCodeOrOther    {        public SomeCodeOrOther()        {        }        public int Do()        {            return 999;        }    }    class Program    {        static void Main(string[] args)        {            Assembly A = Assembly.GetExecutingAssembly();            System.Type[] types = A.GetExportedTypes();            foreach (System.Type t in types)            {                Console.WriteLine("Checking type {0}", t.ToString());                object[] atts = t.GetCustomAttributes(typeof(XXXAttribute), false);                if (atts.Length == 1)                {                    Console.WriteLine("  Found XXXAttribute: Running Test");                    XXXAttribute tca = atts[0] as XXXAttribute;                    try                    {                        tca.Test();                        Console.WriteLine("PASSED");                    }                    catch (System.Exception ex)                    {                        Console.WriteLine("FAILED");                        Console.WriteLine(ex.Message);                    }                }            }            Console.Read();        }    }}