{"record":{"id":"e29cc051b92adb24","repo":"stride3d/stride","slug":"objectserializerbackend-can-not-be-null","errorCode":null,"errorMessage":"ObjectSerializerBackend can not be null","messagePattern":"ObjectSerializerBackend can not be null","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"sources/core/Stride.Core.Yaml/Serialization/SerializerSettings.cs","lineNumber":289,"sourceCode":"            set\n            {\n                if (value == null)\n                    throw new ArgumentNullException(\"value\", $\"{nameof(Attributes)} can not be null\");\n                attributeRegistry = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the ObjectSerializerBackend. Default implementation is <see cref=\"DefaultObjectSerializerBackend\"/>\n        /// </summary>\n        /// <value>The ObjectSerializerBackend.</value>\n        public IObjectSerializerBackend ObjectSerializerBackend\n        {\n            get { return objectSerializerBackend; }\n            set\n            {\n                if (value == null)\n                    throw new ArgumentNullException(\"value\", $\"{nameof(ObjectSerializerBackend)} can not be null\");\n                objectSerializerBackend = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the default factory to instantiate a type. Default is <see cref=\"DefaultObjectFactory\" />.\n        /// </summary>\n        /// <value>The default factory to instantiate a type.</value>\n        /// <exception cref=\"System.ArgumentNullException\">value</exception>\n        public IObjectFactory ObjectFactory\n        {\n            get { return objectFactory; }\n            set\n            {\n                if (value == null)\n                    throw new ArgumentNullException(\"value\", $\"{nameof(ObjectFactory)} can not be null\");\n                objectFactory = value;\n            }","sourceCodeStart":271,"sourceCodeEnd":307,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/core/Stride.Core.Yaml/Serialization/SerializerSettings.cs#L271-L307","documentation":"SerializerSettings.ObjectSerializerBackend supplies low-level object (de)serialization behavior and is mandatory. Assigning null throws ArgumentNullException to fail fast rather than crashing later mid-serialization with a NullReferenceException.","triggerScenarios":"`settings.ObjectSerializerBackend = null` or a factory method returning null for the backend.","commonSituations":"Overriding the backend via DI/config where the override resolution fails; typos in registration causing an unbound resolution.","solutions":["Assign an instance such as new DefaultObjectSerializerBackend() or your custom subclass","Fix the DI registration/factory so it returns a non-null backend"],"exampleFix":"// before\nsettings.ObjectSerializerBackend = ResolveBackend(); // null\n// after\nsettings.ObjectSerializerBackend = ResolveBackend() ?? new DefaultObjectSerializerBackend();","handlingStrategy":"validation","validationCode":"settings.ObjectSerializerBackend = backend ?? new DefaultObjectSerializerBackend();","typeGuard":null,"tryCatchPattern":"try { settings.ObjectSerializerBackend = backend; } catch (ArgumentNullException) { settings.ObjectSerializerBackend = new DefaultObjectSerializerBackend(); }","preventionTips":["Fall back to DefaultObjectSerializerBackend when custom backends fail to resolve","Verify DI registrations for custom backends in startup tests"],"tags":["yaml","serialization","null-argument","configuration"],"backgroundTag":"null-argument","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}