{"record":{"id":"18a22c0624f60206","repo":"EllanJiang/GameFramework","slug":"update-version-list-success-callback-is-invalid","errorCode":null,"errorMessage":"Update version list success callback is invalid.","messagePattern":"Update version list success callback is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Resource/UpdateVersionListCallbacks.cs","lineNumber":36,"sourceCode":"        /// <summary>\n        /// 初始化版本资源列表更新回调函数集的新实例。\n        /// </summary>\n        /// <param name=\"updateVersionListSuccessCallback\">版本资源列表更新成功回调函数。</param>\n        public UpdateVersionListCallbacks(UpdateVersionListSuccessCallback updateVersionListSuccessCallback)\n            : this(updateVersionListSuccessCallback, null)\n        {\n        }\n\n        /// <summary>\n        /// 初始化版本资源列表更新回调函数集的新实例。\n        /// </summary>\n        /// <param name=\"updateVersionListSuccessCallback\">版本资源列表更新成功回调函数。</param>\n        /// <param name=\"updateVersionListFailureCallback\">版本资源列表更新失败回调函数。</param>\n        public UpdateVersionListCallbacks(UpdateVersionListSuccessCallback updateVersionListSuccessCallback, UpdateVersionListFailureCallback updateVersionListFailureCallback)\n        {\n            if (updateVersionListSuccessCallback == null)\n            {\n                throw new GameFrameworkException(\"Update version list success callback is invalid.\");\n            }\n\n            m_UpdateVersionListSuccessCallback = updateVersionListSuccessCallback;\n            m_UpdateVersionListFailureCallback = updateVersionListFailureCallback;\n        }\n\n        /// <summary>\n        /// 获取版本资源列表更新成功回调函数。\n        /// </summary>\n        public UpdateVersionListSuccessCallback UpdateVersionListSuccessCallback\n        {\n            get\n            {\n                return m_UpdateVersionListSuccessCallback;\n            }\n        }\n\n        /// <summary>","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Resource/UpdateVersionListCallbacks.cs#L18-L54","documentation":"The UpdateVersionListCallbacks constructor requires a non-null success callback; passing null throws GameFrameworkException. Without a success handler the framework could not report a completed version list update, so the object refuses construction.","triggerScenarios":"new UpdateVersionListCallbacks(null, failureCallback) — passing a null UpdateVersionListSuccessCallback, typically because a method reference was not bound or a conditional assignment left it null.","commonSituations":"Wiring callbacks in Unity where a handler was unassigned in the Inspector; refactoring removed the handler method; passing the arguments in the wrong order.","solutions":["Pass a valid UpdateVersionListSuccessCallback delegate","Verify the handler method exists and matches the delegate signature","Check argument order (success first, failure second)"],"exampleFix":"// before\nvar callbacks = new UpdateVersionListCallbacks(null, OnUpdateVersionListFailure); // throws\n// after\nvar callbacks = new UpdateVersionListCallbacks(OnUpdateVersionListSuccess, OnUpdateVersionListFailure);","handlingStrategy":"validation","validationCode":"if (onSuccess != null) {\n    var callbacks = new UpdateVersionListCallbacks(onSuccess, onFailure);\n}","typeGuard":"bool IsValidCallbacks(UpdateVersionListSuccessCallback s, UpdateVersionListFailureCallback f) => s != null;","tryCatchPattern":"try { var c = new UpdateVersionListCallbacks(successCb, failureCb); } catch (GameFrameworkException ex) when (ex.Message.Contains(\"success callback\")) { log.Error(\"UpdateVersionListSuccessCallback was null\"); }","preventionTips":["Always bind the success handler method explicitly","Keep success/failure argument order (success first)","Null-check delegates before constructing callback bundles"],"tags":["callbacks","null-argument","version-list"],"backgroundTag":"null-argument","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}