Skip to content

Commit 315004c

Browse files
committed
[fix] 检查是否重写异步方法时,需要考虑 MessageHandler 等处理器基类
1 parent 6bece77 commit 315004c

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

AntJob/Handler.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using NewLife;
66
using NewLife.Data;
77
using NewLife.Log;
8+
using NewLife.Reflection;
89

910
namespace AntJob;
1011

@@ -101,16 +102,20 @@ private Boolean IsExecuteAsyncOverridden()
101102
{
102103
var currentType = GetType();
103104
var baseType = typeof(Handler);
105+
var baseType2 = "DataHandler".GetTypeEx();
104106

105107
// 获取当前类型的所有方法,目标方法任意之一被重写即可
106108
var names = new[] { "ProcessAsync", "OnProcessAsync", "ExecuteAsync", "ProcessItemAsync" };
109+
//var types = new[] { "Handler", "MessageHandler", "CSharpHandler", "DataHandler", "SqlHandler" };
107110
var methods = currentType.GetMethods();
108111
foreach (var method in methods)
109112
{
110113
if (!names.Contains(method.Name)) continue;
111114

112115
// 如果当前方法的声明类型不是Handler基类,说明被重写了
113-
if (method.DeclaringType != baseType)
116+
var dtype = method.DeclaringType;
117+
if (dtype != baseType && dtype != baseType2 && /*!types.Contains(dtype.Name) &&*/
118+
dtype.Assembly != baseType.Assembly && dtype.Assembly != baseType2?.Assembly)
114119
return true;
115120
}
116121

0 commit comments

Comments
 (0)