{"record":{"id":"3d34b5047d4e896b","repo":"stride3d/stride","slug":"value-cannot-be-null-parameter-uielementtype","errorCode":null,"errorMessage":"Value cannot be null. (Parameter 'uiElementType')","messagePattern":"Value cannot be null\\. \\(Parameter 'uiElementType'\\)","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.UI/Renderers/RendererManager.cs","lineNumber":64,"sourceCode":"                }\n\n                // try to get the renderer from the default renderer factory.\n                if (elementRenderer == null && defaultFactory != null)\n                    elementRenderer = defaultFactory.TryCreateRenderer(element);\n\n                if (elementRenderer == null)\n                    throw new InvalidOperationException($\"No renderer found for element {element}\");\n\n                // cache the renderer for future uses.\n                elementIdToRenderer[element.Id] = elementRenderer;\n            }\n\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        {","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.UI/Renderers/RendererManager.cs#L46-L82","documentation":"Argument-null validation in RendererManager.RegisterRendererFactory: the uiElementType parameter is null. The method maps a UIElement-derived type to a renderer factory; a null type key cannot be registered or later matched during renderer lookup, so the call is rejected with ArgumentNullException named 'uiElementType'.","triggerScenarios":"Thrown at sources/engine/Stride.UI/Renderers/RendererManager.cs:64 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-null Type derived from UIElement as the uiElementType argument to RegisterRendererFactory.","At the call site, check the type variable for null (e.g. after reflection lookups like Assembly.GetType) before calling RegisterRendererFactory.","If the type is resolved dynamically, fail fast with a clear log message instead of passing null into the registration API."],"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"}