unoplatform/uno · error · ArgumentNullException
property
Error message
property
What it means
XamlWriterInternalBase.WriteStartMember throws ArgumentNullException('property') when a null XamlMember is written. The member is added to the current object's written-properties list and compared against XamlLanguage.PositionalParameters, so a null member corrupts both state tracking and duplicate detection.
Source
Thrown at src/SourceGenerators/System.Xaml/System.Xaml/XamlWriterInternalBase.cs:185
manager.StartObject ();
var cstate = new ObjectState () {Type = xamlType};
object_states.Push (cstate);
OnWriteStartObject ();
}
public void WriteValue (object value)
{
manager.Value ();
OnWriteValue (value);
}
public void WriteStartMember (XamlMember property)
{
if (property == null)
throw new ArgumentNullException ("property");
manager.StartMember ();
if (property == XamlLanguage.PositionalParameters)
// this is an exception that indicates the state manager to accept more than values within this member.
manager.AcceptMultipleValues = true;
var state = object_states.Peek ();
var wpl = state.WrittenProperties;
if (wpl.Any (wp => wp.Member == property))
throw new XamlDuplicateMemberException (String.Format (CultureInfo.InvariantCulture, "Property '{0}' is already set to this '{1}' object", property, object_states.Peek ().Type));
wpl.Add (new MemberAndValue (property));
if (property == XamlLanguage.PositionalParameters)
state.PositionalParameterIndex = 0;
OnWriteStartMember (property);
}
public void WriteEndObject ()View on GitHub (pinned to 0418340488)
Solutions
- Resolve the XamlMember before writing it; if resolution fails, report an error rather than writing null.
- In custom readers, ensure Member is non-null when NodeType == StartMember.
- Skip unknown members if your pipeline policy allows it, instead of writing null.
Example fix
// before
if (reader.NodeType == XamlNodeType.StartMember)
writer.WriteStartMember(reader.Member);
// after
if (reader.NodeType == XamlNodeType.StartMember && reader.Member != null)
writer.WriteStartMember(reader.Member); Defensive patterns
Strategy: type-guard
Validate before calling
if (reader.NodeType == XamlNodeType.StartMember && reader.Member != null)
writer.WriteStartMember(reader.Member); Type guard
static bool CanWriteStartMember(XamlReader r) => r.NodeType == XamlNodeType.StartMember && r.Member is not null;
Prevention
- Resolve the XamlMember before writing; report resolution failures explicitly.
- Ensure custom readers return non-null Member on StartMember nodes.
When it happens
Trigger: Forwarding a StartMember node from a reader whose Member property is null (reader not positioned on a member, or member resolution failed), or programmatically writing a member before it was resolved.
Common situations: Custom XamlReader returning null Member on StartMember nodes; member-resolution code that returns null for unknown properties and the pipeline forwards it anyway; tests of the guard.
Related errors
AI-assisted analysis of unoplatform/uno@0418340488 (2026-08-13).
Data as JSON: /api/errors/bed2194fee93f229.
Report an issue: GitHub.