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
- 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'.
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
- 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
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
- SR.ReachSerialization_ExpectedFixedDocument
- SR.ReachSerialization_ExpectedFixedPage
- 'serializableObjectContext.TargetObject' must be of type…
- SR.Format(SR.MustBeOfType…
- SR.Format(SR.MustBeOfType…
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)