{"record":{"id":"22615fabd5a0dd64","repo":"dotnet/wpf","slug":"sr-reachserialization-expectedfixeddocumentsequence","errorCode":null,"errorMessage":"SR.ReachSerialization_ExpectedFixedDocumentSequence","messagePattern":"SR\\.ReachSerialization_ExpectedFixedDocumentSequence","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/NGCSerializer.cs","lineNumber":470,"sourceCode":"\n        }\n\n        /// <summary>\n        ///\n        /// </summary>\n        public\n        override\n        void\n        SerializeObject(\n            Object serializedObject\n            )\n        {\n            ArgumentNullException.ThrowIfNull(serializedObject);\n            FixedDocumentSequence fds = serializedObject as FixedDocumentSequence;\n            if( fds == null )\n            {\n\n               throw new ArgumentException(SR.ReachSerialization_ExpectedFixedDocumentSequence);\n            }\n\n            NgcSerializationManager ngcManager = SerializationManager as NgcSerializationManager;\n\n            if(!ngcManager.IsPrintTicketEventHandlerEnabled)\n            {\n                //ngcManager.FdsPrintTicket = fds.PrintTicket as PrintTicket;\n            }\n            else\n            {\n                XpsSerializationPrintTicketRequiredEventArgs printTicketEvent =\n                new XpsSerializationPrintTicketRequiredEventArgs(PrintTicketLevel.FixedDocumentSequencePrintTicket,\n                                                                 0);\n                ngcManager.OnNGCSerializationPrintTicketRequired(printTicketEvent);\n            }\n\n            ngcManager.StartDocument(fds,false);\n","sourceCodeStart":452,"sourceCodeEnd":488,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/NGCSerializer.cs#L452-L488","documentation":"NgcSerializer.SerializeObject (the FixedDocumentSequence overload) casts serializedObject to FixedDocumentSequence and throws ArgumentException(SR.ReachSerialization_ExpectedFixedDocumentSequence) when the cast returns null. Only an XPS document sequence is valid at the top level of this serializer.","triggerScenarios":"Calling the sequence-level SerializeObject with a FixedDocument, FixedPage, or any other type, causing the `as FixedDocumentSequence` cast to yield null.","commonSituations":"Calling the top-level serializer with a single FixedDocument; deserialization/serialization code paths mixed up after upgrading the XPS writer stack.","solutions":["Pass a FixedDocumentSequence (build one from your FixedDocuments via FixedDocumentSequence.References) to this overload.","Use the FixedDocument-specific overload for single documents.","Guard the call site with 'is FixedDocumentSequence'."],"exampleFix":"// before\nseqSerializer.SerializeObject(fixedDocument);\n// after\nFixedDocumentSequence seq = new FixedDocumentSequence();\nseq.References.Add(new DocumentReference { Source = ... });\nseqSerializer.SerializeObject(seq);","handlingStrategy":"type-guard","validationCode":"if (obj is not FixedDocumentSequence)\n    throw new ArgumentException(\"Sequence serializer requires a FixedDocumentSequence instance\");","typeGuard":"bool IsFixedDocumentSequence(object o) => o is FixedDocumentSequence;","tryCatchPattern":"try { seqSerializer.SerializeObject(obj); }\ncatch (ArgumentException ex) when (ex.Message.Contains(\"FixedDocumentSequence\")) { /* use the FixedDocument overload instead */ }","preventionTips":["Wrap single documents in a FixedDocumentSequence when the top-level serializer is required","Verify document hierarchy level before choosing a serializer","Centralize serializer selection in one dispatch helper"],"tags":["wpf","xps","argument","type-mismatch","serialization"],"backgroundTag":"invalid-argument-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"}