{"record":{"id":"2d1c16e793e89705","repo":"dotnet/wpf","slug":"invalidenumargumentexception-direction-int-direction-typeof","errorCode":null,"errorMessage":"InvalidEnumArgumentException(direction, (int)direction, typeof(ListSortDirection))","messagePattern":"InvalidEnumArgumentException\\(direction, \\(int\\)direction, typeof\\(ListSortDirection\\)\\)","errorType":"validation","errorClass":"InvalidEnumArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/WindowsBase/System/ComponentModel/SortDescription.cs","lineNumber":28,"sourceCode":"    {\n        //------------------------------------------------------\n        //\n        //  Public Constructors\n        //\n        //------------------------------------------------------\n\n        #region Public Constructors\n\n        /// <summary>\n        /// Create a sort description.\n        /// </summary>\n        /// <param name=\"propertyName\">Property to sort by</param>\n        /// <param name=\"direction\">Specifies the direction of sort operation</param>\n        /// <exception cref=\"InvalidEnumArgumentException\"> direction is not a valid value for ListSortDirection </exception>\n        public SortDescription(string propertyName, ListSortDirection direction)\n        {\n            if (direction != ListSortDirection.Ascending && direction != ListSortDirection.Descending)\n                throw new InvalidEnumArgumentException(\"direction\", (int)direction, typeof(ListSortDirection));\n\n            _propertyName = propertyName;\n            _direction = direction;\n            _sealed = false;\n        }\n\n        #endregion Public Constructors\n\n\n        //------------------------------------------------------\n        //\n        //  Public Properties\n        //\n        //------------------------------------------------------\n\n        #region Public Properties\n\n        /// <summary>","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/ComponentModel/SortDescription.cs#L10-L46","documentation":"The SortDescription constructor validates that direction is exactly ListSortDirection.Ascending or Descending. Any other cast integer/enum value throws InvalidEnumArgumentException naming the 'direction' parameter, guarding against undefined sort directions.","triggerScenarios":"new SortDescription(\"Name\", (ListSortDirection)2) or passing an int-cast/unknown enum value from config, data binding, or deserialization.","commonSituations":"Deserializing sort settings from XML/JSON where the stored integer no longer matches the enum; bitwise-combining enum values incorrectly; cross-version enum changes.","solutions":["Pass only ListSortDirection.Ascending or ListSortDirection.Descending","Enum.IsDefined(typeof(ListSortDirection), value) before casting and constructing","Map legacy/unknown stored values to a valid direction with a default fallback"],"exampleFix":"// before\nvar sd = new SortDescription(prop, (ListSortDirection)rawValue);\n// after\nvar dir = Enum.IsDefined(typeof(ListSortDirection), rawValue) ? (ListSortDirection)rawValue : ListSortDirection.Ascending;\nvar sd = new SortDescription(prop, dir);","handlingStrategy":"validation","validationCode":"if (!Enum.IsDefined(typeof(ListSortDirection), direction)) throw new InvalidEnumArgumentException(nameof(direction), (int)direction, typeof(ListSortDirection));","typeGuard":"static bool IsValidSortDirection(ListSortDirection d) => d == ListSortDirection.Ascending || d == ListSortDirection.Descending;","tryCatchPattern":"try { var sd = new SortDescription(name, dir); } catch (InvalidEnumArgumentException) { dir = ListSortDirection.Ascending; }","preventionTips":["Never cast raw ints to ListSortDirection without Enum.IsDefined","Persist sort directions as enum names, not numbers","Clamp deserialized values to Ascending by default"],"tags":["wpf","sorting","enum","argument-validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}