dotnet/wpf · error · ArgumentException

SR.ReachSerialization_ExpectedFixedDocumentSequence

Error message

SR.ReachSerialization_ExpectedFixedDocumentSequence

What it means

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.

Solutions

  1. Pass a FixedDocumentSequence (build one from your FixedDocuments via FixedDocumentSequence.References) to this overload.
  2. Use the FixedDocument-specific overload for single documents.
  3. Guard the call site with 'is FixedDocumentSequence'.

Example fix

// before
seqSerializer.SerializeObject(fixedDocument);
// after
FixedDocumentSequence seq = new FixedDocumentSequence();
seq.References.Add(new DocumentReference { Source = ... });
seqSerializer.SerializeObject(seq);
Defensive patterns

Strategy: type-guard

Validate before calling

if (obj is not FixedDocumentSequence)
    throw new ArgumentException("Sequence serializer requires a FixedDocumentSequence instance");

Type guard

bool IsFixedDocumentSequence(object o) => o is FixedDocumentSequence;

Try / catch

try { seqSerializer.SerializeObject(obj); }
catch (ArgumentException ex) when (ex.Message.Contains("FixedDocumentSequence")) { /* use the FixedDocument overload instead */ }

Prevention

When it happens

Trigger: Calling the sequence-level SerializeObject with a FixedDocument, FixedPage, or any other type, causing the `as FixedDocumentSequence` cast to yield null.

Common situations: Calling the top-level serializer with a single FixedDocument; deserialization/serialization code paths mixed up after upgrading the XPS writer stack.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


AI-assisted analysis of dotnet/wpf@81131a70a4 (2026-09-14). Data as JSON: /api/errors/22615fabd5a0dd64. Report an issue: GitHub.

Appendix: source

Thrown at src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/NGCSerializer.cs:470

        }

        /// <summary>
        ///
        /// </summary>
        public
        override
        void
        SerializeObject(
            Object serializedObject
            )
        {
            ArgumentNullException.ThrowIfNull(serializedObject);
            FixedDocumentSequence fds = serializedObject as FixedDocumentSequence;
            if( fds == null )
            {

               throw new ArgumentException(SR.ReachSerialization_ExpectedFixedDocumentSequence);
            }

            NgcSerializationManager ngcManager = SerializationManager as NgcSerializationManager;

            if(!ngcManager.IsPrintTicketEventHandlerEnabled)
            {
                //ngcManager.FdsPrintTicket = fds.PrintTicket as PrintTicket;
            }
            else
            {
                XpsSerializationPrintTicketRequiredEventArgs printTicketEvent =
                new XpsSerializationPrintTicketRequiredEventArgs(PrintTicketLevel.FixedDocumentSequencePrintTicket,
                                                                 0);
                ngcManager.OnNGCSerializationPrintTicketRequired(printTicketEvent);
            }

            ngcManager.StartDocument(fds,false);

View on GitHub (pinned to 81131a70a4)