{"record":{"id":"6f98c03f7db305ef","repo":"dotnet/wpf","slug":"sr-reachserialization-targetnotprintticket","errorCode":null,"errorMessage":"SR.ReachSerialization_TargetNotPrintTicket","messagePattern":"SR\\.ReachSerialization_TargetNotPrintTicket","errorType":"exception","errorClass":"XpsSerializationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/ReachPrintTicketSerializer.cs","lineNumber":64,"sourceCode":"        /// </summary>\n        /// <param name=\"serializedObject\">\n        /// Instance of object to be serialized.\n        /// </param>\n        public\n        override\n        void\n        SerializeObject(\n            object serializedObject\n            )\n        {\n            PrintTicket printTicket = serializedObject as PrintTicket;\n\n            if (printTicket == null)\n            {\n                //\n                // Throw a meaningful exception\n                //\n                throw new XpsSerializationException(SR.ReachSerialization_TargetNotPrintTicket);\n            }\n\n            //  The new class XpsOMSerializationManager now also interacts with this class\n            // the cast below is shorthand for cast to either XpsSerializationManager or XpsOMSerializationManager\n            // we want this to throw an InvalidCastException if it fails to mantain compatibility.\n            if ((IXpsSerializationManager)SerializationManager != null)\n            {\n                SerializationManager.\n                     PackagingPolicy.PersistPrintTicket(printTicket);\n            }\n        }\n\n        #endregion Public Methods\n\n        #region Internal Methods\n\n        /// <summary>\n        /// The main method that is called to serialize the PrintTicket","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/ReachPrintTicketSerializer.cs#L46-L82","documentation":"ReachPrintTicketSerializer.SerializeObject throws XpsSerializationException(SR.ReachSerialization_TargetNotPrintTicket) when the object passed for serialization is null or not a PrintTicket (it is cast/as-cast to PrintTicket and null-checked). This serializer only persists PrintTicket objects; anything else — including null — is rejected with this meaningful exception.","triggerScenarios":"Calling ReachPrintTicketSerializer.SerializeObject(obj) where obj is null, or is not a PrintTicket (e.g. a PrintQueue, a raw XML stream, or another document part).","commonSituations":"Manual XPS packaging code that passes the wrong part of the document to the print-ticket serializer; a print ticket failed to construct upstream and null propagated; confusion between PrintTicket and FixedPage/FixedDocument serializers.","solutions":["Pass a non-null PrintTicket instance to SerializeObject","Check upstream construction — a failed PrintTicket creation silently returned null","Use the correct serializer for other object types (FixedPage/FixedDocument serializers)","Guard with a type check before invoking the serializer"],"exampleFix":"// before\nprintTicketSerializer.SerializeObject(queue); // not a PrintTicket\n// after\nif (target is PrintTicket pt)\n    printTicketSerializer.SerializeObject(pt);\nelse\n    throw new ArgumentException(\"Expected a PrintTicket\");","handlingStrategy":"validation","validationCode":"if (obj is not PrintTicket pt) throw new ArgumentException(\"Expected PrintTicket\");","typeGuard":"bool IsPrintTicket(object o) => o is PrintTicket;","tryCatchPattern":"try { printTicketSerializer.SerializeObject(obj); } catch (XpsSerializationException ex) { /* target was not a PrintTicket */ }","preventionTips":["Null-check PrintTicket construction results upstream","Dispatch to serializers by exact type","Never pass null into serializer entry points"],"tags":["wpf","xps-serialization","print-ticket","type-mismatch"],"backgroundTag":"type-mismatch","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-22T01:17:13.364Z"}