首页 > 代码库 > 一段关于测试和自定义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(); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。