日期:2014-05-20 浏览次数:21269 次
private static IEnumerable<TestCaseType> GetTestCases(bool selectAllTestCase)
{
var tm = DateTime.Now.AddDays(-7);
return from asm in AppDomain.CurrentDomain.GetAssemblies()
let types = asm.GetTypes()
where asm.GetReferencedAssemblies().Any(asm2 => asm2.FullName == typeof(Tests).Assembly.FullName)
from t in types
from m in t.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static)
let pa = new
{
attrs = m.GetCustomAttributes(typeof(TestCaseAttribute), true).OfType<TestCaseAttribute>().Where(x => x.TimeStamp <= DateTime.Now),
}
where (selectAllTestCase || pa.attrs.Any(x => x.TimeStamp >= tm))
let pb = new
{
attr = pa.attrs.FirstOrDefault(x => x.GetType() == typeof(TestCaseAttribute)),
method = m
}
where m.ReturnType == typeof(void) && m.GetParameters().Length == 0 &&
!m.GetCustomAttributes(typeof(StopSupportAttribute), true).OfType<StopSupportAttribute>().Any(at => at.TimeStamp <= DateTime.Now)
&& pb.attr != null
select new TestCaseType
{
attr = pb.attr,
proc = (TestCaseDelegate)Delegate.CreateDelegate(typeof(TestCaseDelegate), m)
};
}
------解决方案--------------------
虽然不是很明白楼上的代码,但是膜拜之情,油然而生。
------解决方案--------------------