{"record":{"id":"07a2ad20a157fada","repo":"JamesNK/Newtonsoft.Json","slug":"value-07a2ad","errorCode":null,"errorMessage":"value","messagePattern":"value","errorType":"validation","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"Src/Newtonsoft.Json/Linq/JsonMergeSettings.cs","lineNumber":58,"sourceCode":"        /// Initializes a new instance of the <see cref=\"JsonMergeSettings\"/> class.\n        /// </summary>\n        public JsonMergeSettings()\n        {\n            _propertyNameComparison = StringComparison.Ordinal;\n        }\n\n        /// <summary>\n        /// Gets or sets the method used when merging JSON arrays.\n        /// </summary>\n        /// <value>The method used when merging JSON arrays.</value>\n        public MergeArrayHandling MergeArrayHandling\n        {\n            get => _mergeArrayHandling;\n            set\n            {\n                if (value < MergeArrayHandling.Concat || value > MergeArrayHandling.Merge)\n                {\n                    throw new ArgumentOutOfRangeException(nameof(value));\n                }\n\n                _mergeArrayHandling = value;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets how null value properties are merged.\n        /// </summary>\n        /// <value>How null value properties are merged.</value>\n        public MergeNullValueHandling MergeNullValueHandling\n        {\n            get => _mergeNullValueHandling;\n            set\n            {\n                if (value < MergeNullValueHandling.Ignore || value > MergeNullValueHandling.Merge)\n                {\n                    throw new ArgumentOutOfRangeException(nameof(value));","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/JamesNK/Newtonsoft.Json/blob/4f73e74372445108d2c1bda37b36e6f5e43402e0/Src/Newtonsoft.Json/Linq/JsonMergeSettings.cs#L40-L76","documentation":"ArgumentOutOfRangeException(nameof(value)) from the MergeArrayHandling property setter on JsonMergeSettings, validating the value is within MergeArrayHandling.Concat..MergeArrayHandling.Merge. An out-of-range integer cast to MergeArrayHandling (or a value bound from invalid configuration) is rejected. nameof(value) is why the message is just \"value\".","triggerScenarios":"Assigning settings.MergeArrayHandling = (MergeArrayHandling)50; or binding a numeric/textual value not matching Concat, Union, Replace, or Merge. Reflection assignment of unrecognised enum ints during JObject.Merge configuration.","commonSituations":"Config-driven merge settings binding without enum validation; deserializing JsonMergeSettings from JSON with an invalid enum value; integer casts from external config sources.","solutions":["Guard with Enum.IsDefined(typeof(MergeArrayHandling), v) before assigning.","Use enum-aware configuration binding that rejects unknown values.","Default-initialise JsonMergeSettings and only override validated members."],"exampleFix":"// before\nsettings.MergeArrayHandling = (MergeArrayHandling)configValue;\n\n// after\nif (Enum.IsDefined(typeof(MergeArrayHandling), configValue))\n    settings.MergeArrayHandling = (MergeArrayHandling)configValue;","handlingStrategy":"validation","validationCode":"if (Enum.IsDefined(typeof(MergeArrayHandling), v)) settings.MergeArrayHandling = (MergeArrayHandling)v;","typeGuard":"static bool IsValidMergeArrayHandling(int v) => Enum.IsDefined(typeof(MergeArrayHandling), v);","tryCatchPattern":"try { settings.MergeArrayHandling = (MergeArrayHandling)configValue; } catch (ArgumentOutOfRangeException) { /* keep default */ }","preventionTips":["Validate enum values with Enum.IsDefined before assigning.","Use enum-aware configuration binding.","Default-initialise JsonMergeSettings and override only validated values."],"tags":["jsonmergesettings","argumentoutofrange","enum","validation","configuration","merge"],"analyzedSha":"4f73e74372445108d2c1bda37b36e6f5e43402e0","analyzedAt":"2026-08-07T06:10:08.596Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}