{"record":{"id":"682cad2455ae717d","repo":"egametang/ET","slug":"target-select-handler-not-inherit-itargetselecthan","errorCode":null,"errorMessage":"target select handler not inherit ITargetSelectHandler abstract class: {obj.GetType().FullName}","messagePattern":"target select handler not inherit ITargetSelectHandler abstract class: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"Packages/cn.etetet.spell/Scripts/Model/Client/TargetSelectDispatcher.cs","lineNumber":63,"sourceCode":"\n        public void Awake()\n        {\n            HashSet<Type> types = CodeTypes.Instance.GetTypes(typeof (TargetSelectHandlerAttribute));\n            \n            foreach (Type type in types)\n            {\n                this.Register(type);\n            }\n        }\n        \n        private void Register(Type type)\n        {\n            object obj = Activator.CreateInstance(type);\n\n            ITargetSelectHandler targetSelectHandler = obj as ITargetSelectHandler;\n            if (targetSelectHandler == null)\n            {\n                throw new Exception($\"target select handler not inherit ITargetSelectHandler abstract class: {obj.GetType().FullName}\");\n            }\n\n            Type nodeType = targetSelectHandler.GetNodeType();\n            this.handlers.TryAdd(nodeType, targetSelectHandler);\n        }\n        \n        \n        public ETTask<int> Handle(TargetSelector node, EntityRef<Unit> unit, SpellConfig spellConfig)\n        {\n            Type handlerType = node.GetType();\n            while (handlerType != null)\n            {\n                if (this.handlers.TryGetValue(handlerType, out ITargetSelectHandler targetSelectHandler))\n                {\n                    return targetSelectHandler.Handle(node, unit, spellConfig);\n                }\n\n                handlerType = handlerType.BaseType;","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/egametang/ET/blob/5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f/Packages/cn.etetet.spell/Scripts/Model/Client/TargetSelectDispatcher.cs#L45-L81","documentation":"Error \"target select handler not inherit ITargetSelectHandler abstract class: {obj.GetType().FullName}\" thrown in egametang/ET.","triggerScenarios":"TargetSelectDispatcher 扫描到的 handler 类没有继承 ITargetSelectHandler 抽象基类","commonSituations":"See trigger scenarios.","solutions":["让该 handler 类继承 ITargetSelectHandler 抽象类","或从程序集中移除/排除这个非 handler 类"],"exampleFix":"public class MyTargetSelectHandler : ITargetSelectHandler { ... }","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f","analyzedAt":"2026-08-13T21:10:40.377Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}