{"record":{"id":"954f06872f4a09e3","repo":"stride3d/stride","slug":"value-cannot-be-null-parameter-renderer","errorCode":null,"errorMessage":"Value cannot be null. (Parameter 'renderer')","messagePattern":"Value cannot be null\\. \\(Parameter 'renderer'\\)","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.UI/Renderers/RendererManager.cs","lineNumber":76,"sourceCode":"\n            return elementRenderer;\n        }\n\n        public void RegisterRendererFactory(Type uiElementType, IElementRendererFactory factory)\n        {\n            if (uiElementType == null) throw new ArgumentNullException(nameof(uiElementType));\n            if (factory == null) throw new ArgumentNullException(nameof(factory));\n\n            if (!typeof(UIElement).GetTypeInfo().IsAssignableFrom(uiElementType.GetTypeInfo()))\n                throw new InvalidOperationException(uiElementType + \" is not a descendant of UIElement.\");\n\n            typesToUserFactories[uiElementType] = factory;\n        }\n\n        public void RegisterRenderer(UIElement element, ElementRenderer renderer)\n        {\n            if (element == null) throw new ArgumentNullException(nameof(element));\n            if (renderer == null) throw new ArgumentNullException(nameof(renderer));\n\n            elementIdToRenderer[element.Id] = renderer;\n        }\n\n        public void Dispose()\n        {\n            foreach (var renderer in elementIdToRenderer.Values)\n            {\n                if (!renderer.IsDisposed)\n                    renderer.Dispose();\n            }\n            elementIdToRenderer.Clear();\n        }\n    }\n}\n","sourceCodeStart":58,"sourceCodeEnd":92,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.UI/Renderers/RendererManager.cs#L58-L92","documentation":"Argument-null validation in RendererManager.RegisterRenderer: the renderer parameter is null. Caching a null renderer would cause GetRenderer to return nothing useful on later frames; the registration therefore rejects a null IElementRenderer with ArgumentNullException named 'renderer'.","triggerScenarios":"Thrown at sources/engine/Stride.UI/Renderers/RendererManager.cs:76 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-null IElementRenderer instance as the renderer argument to RegisterRenderer.","Create the renderer first; if renderer construction can fail or return null, skip the registration and log instead of passing null.","Guard the call site so a failed renderer lookup does not flow a null reference into RegisterRenderer."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}