{"record":{"id":"23803c4f02d2b385","repo":"devlooped/moq","slug":"value-argument-is-null-mockfactory","errorCode":null,"errorMessage":"value (Argument is null)","messagePattern":"value \\(Argument is null\\)","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Moq/Obsolete/MockFactory.cs","lineNumber":161,"sourceCode":"            set\n            {\n                this.DefaultValueProvider = value switch\n                {\n                    DefaultValue.Empty => DefaultValueProvider.Empty,\n                    DefaultValue.Mock => DefaultValueProvider.Mock,\n                    _ => throw new ArgumentOutOfRangeException(nameof(value)),\n                };\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the <see cref=\"Moq.DefaultValueProvider\"/> instance that will be used\n        /// e. g. to produce default return values for unexpected invocations.\n        /// </summary>\n        public DefaultValueProvider DefaultValueProvider\n        {\n            get => this.defaultValueProvider;\n            set => this.defaultValueProvider = value ?? throw new ArgumentNullException(nameof(value));\n        }\n\n        /// <summary>\n        /// Gets the mocks that have been created by this factory and \n        /// that will get verified together.\n        /// </summary>\n        protected internal IEnumerable<Mock> Mocks { get { return mocks; } }\n\n        /// <summary>\n        /// A set of switches that influence how mocks created by this factory will operate.\n        /// You can opt in or out of certain features via this property.\n        /// </summary>\n        public Switches Switches\n        {\n            get => this.switches;\n            set => this.switches = value;\n        }\n","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/devlooped/moq/blob/89a5be629c752960fe403e95ff583e4ae6f00542/src/Moq/Obsolete/MockFactory.cs#L143-L179","documentation":"MockFactory.DefaultValueProvider is a non-nullable property, so its setter rejects null with ArgumentNullException(paramName: 'value'). Assigning null would leave the factory without a default value provider, which Moq treats as a programming error.","triggerScenarios":"Executing factory.DefaultValueProvider = null, typically via a property copy from a nullable source, reflection, or a config object whose field is null.","commonSituations":"Copying settings between MockFactory instances where the source was never initialized; data binding that pushes null into the property.","solutions":["Only assign a real DefaultValueProvider instance (DefaultValueProvider.Empty, .Mock, or a custom provider)","If you want 'no customization', assign DefaultValueProvider.Empty rather than null","Null-check the source value before copying it into the property"],"exampleFix":"// before\nfactory.DefaultValueProvider = maybeNull;\n// after\nfactory.DefaultValueProvider = maybeNull ?? DefaultValueProvider.Empty;","handlingStrategy":"validation","validationCode":"if (provider is null)\n    provider = DefaultValueProvider.Empty;\nfactory.DefaultValueProvider = provider;","typeGuard":null,"tryCatchPattern":"try\n{\n    factory.DefaultValueProvider = provider;\n}\ncatch (ArgumentNullException ex)\n{\n    // ex.ParamName == \"value\"\n    factory.DefaultValueProvider = DefaultValueProvider.Empty;\n}","preventionTips":["Null-coalesce nullable sources before assigning","Never copy properties from uninitialized factory/config objects without checks","Use DefaultValueProvider.Empty to express 'default' instead of null"],"tags":["moq","argumentnull","mockfactory","defaultvalueprovider"],"backgroundTag":"null-argument","analyzedSha":"89a5be629c752960fe403e95ff583e4ae6f00542","analyzedAt":"2026-09-16T05:31:39.496Z","contentChangedAt":"2026-09-16T05:31:39.496Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}