unoplatform/uno · error · ArgumentNullException

reader

Error message

reader

What it means

XamlWriter.WriteNode(XamlReader) throws ArgumentNullException('reader') when the reader is null. WriteNode dispatches on reader.NodeType to forward each node to the corresponding Write* method, so a null reader has no node to read.

Source

Thrown at src/SourceGenerators/System.Xaml/System.Xaml/XamlWriter.cs:59

		}

		void IDisposable.Dispose ()
		{
			Dispose (true);
		}

		public abstract void WriteEndMember ();
		public abstract void WriteEndObject ();
		public abstract void WriteGetObject ();
		public abstract void WriteNamespace (NamespaceDeclaration namespaceDeclaration);
		public abstract void WriteStartMember (XamlMember xamlMember);
		public abstract void WriteStartObject (XamlType type);
		public abstract void WriteValue (object value);

		public void WriteNode (XamlReader reader)
		{
			if (reader == null)
				throw new ArgumentNullException ("reader");

			switch (reader.NodeType) {
			case XamlNodeType.StartObject:
				WriteStartObject (reader.Type);
				break;
			case XamlNodeType.GetObject:
				WriteGetObject ();
				break;
			case XamlNodeType.EndObject:
				WriteEndObject ();
				break;
			case XamlNodeType.StartMember:
				WriteStartMember (reader.Member);
				break;
			case XamlNodeType.EndMember:
				WriteEndMember ();
				break;
			case XamlNodeType.Value:

View on GitHub (pinned to 0418340488)

Solutions

  1. Null-check the reader before calling WriteNode.
  2. Prefer XamlServices.Transform(reader, writer) which handles the loop and validates arguments for you.
  3. Ensure the reader factory throws rather than returns null.

Example fix

// before
while (!reader.IsEof) { writer.WriteNode(reader); reader.Read(); }

// after
if (reader == null) throw new ArgumentNullException(nameof(reader));
XamlServices.Transform(reader, writer);
Defensive patterns

Strategy: validation

Validate before calling

if (reader == null) throw new ArgumentNullException(nameof(reader));
writer.WriteNode(reader);

Prevention

When it happens

Trigger: Calling WriteNode with a reader variable that is null — often when manually looping nodes or when a custom pipeline passed null where a reader was expected.

Common situations: Hand-written node loops (instead of XamlServices.Transform) that pass a null reader; reader factories returning null on error; tests validating argument checks.

Related errors


AI-assisted analysis of unoplatform/uno@0418340488 (2026-08-13). Data as JSON: /api/errors/6ae6d6fc35eb7e12. Report an issue: GitHub.