在做定时任务模块,将原有的方法,作为定时任务执行,由前台配置定时的时间,这里使用的是特性,就是给方法脑袋上加个[SysTask] ,在系统启动后 读取全部带SysTask特性的方法,这样就可以在前台展示了。
这里需要 遍历当前解决方案所有的程序集的所有方法,得到包括SysTask特性的方法,然后实例化该类,执行方法;

就是一个遍历, 这里直接写出

使用遍历

可以注意一下最后两个参数 ,一个是 ConstructorArguments,一个是 NamedArguments

如果特性是这么写的

 [SysTask(taskGUID, "更新数据源")]
 public static void Update(string SourceKey)
 {
 }

就是普通的重载,那么使用 ConstructorArguments 就可以拿到了,是一个集合 0,1,2,3 这么拿,

如果你的特性这么写

[AttributeUsage(AttributeTargets.Method)]
public class SysTaskAttribute : Attribute
{
   public string key { get; set; }
}

没有重载,AttributeTargets.Method 是属性可以当参数的意思
那么特性可以这样用

 [SysTask(key = taskGUID)]
 public static void Update(string SourceKey)
 {
 }

没有重载时 ConstructorArguments 就拿不到了,要用 最后一个参数就是 NamedArguments

---分割线---

那么如何实例化方法调用,并且传参呢,先下班,想起来补;