在做定时任务模块,将原有的方法,作为定时任务执行,由前台配置定时的时间,这里使用的是特性,就是给方法脑袋上加个[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
---分割线---
那么如何实例化方法调用,并且传参呢,先下班,想起来补;