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
- Null-check the reader before calling WriteNode.
- Prefer XamlServices.Transform(reader, writer) which handles the loop and validates arguments for you.
- 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
- Prefer XamlServices.Transform over hand-written WriteNode loops — it validates and iterates for you.
- Enable nullable reference types so a null reader is a compile-time warning.
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.