dotnet/wpf · error · ArgumentNullException

member

Error message

member

What it means

The public XamlMemberInvoker(XamlMember member) constructor requires a non-null XamlMember; passing null throws ArgumentNullException with the parameter name 'member'. A member invoker is meaningless without its owning member, so null is rejected up front.

Solutions

  1. Null-check the XamlMember before constructing the invoker and handle the 'member not found' case explicitly.
  2. Use the member's invoker directly: XamlMember.Invoker already exposes a correctly constructed XamlMemberInvoker.
  3. For the unknown-member sentinel case, use XamlMemberInvoker.UnknownInvoker instead of constructing one.

Example fix

// before
var invoker = new XamlMemberInvoker(type.GetMember(memberName)); // throws if memberName not found
// after
var member = type.GetMember(memberName);
if (member is null) { /* handle unresolved member */ return; }
var invoker = member.Invoker;
Defensive patterns

Strategy: type-guard

Validate before calling

if (member is null) return; // or throw a domain-specific error

Type guard

static bool TryGetInvoker(XamlMember? m, out XamlMemberInvoker? invoker) { invoker = m?.Invoker; return invoker is not null; }

Try / catch

try { var invoker = new XamlMemberInvoker(member); }
catch (ArgumentNullException ex) when (ex.ParamName == "member") { /* member lookup failed */ }

Prevention

When it happens

Trigger: Calling `new XamlMemberInvoker(null)`, e.g. when the member comes from a lookup that returned null (XamlType.GetMember miss) and the result is passed straight into the constructor.

Common situations: Custom XAML value serializers/MarkupExtension support code fetching a member then constructing its invoker; refactoring where a nullable member variable began being passed without a null check.

Related errors


AI-assisted analysis of dotnet/wpf@81131a70a4 (2026-09-14). Data as JSON: /api/errors/e240fe307a92d416. Report an issue: GitHub.

Appendix: source

Thrown at src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Schema/XamlMemberInvoker.cs:25

using System.Xaml.MS.Impl;

namespace System.Xaml.Schema
{
    public class XamlMemberInvoker
    {
        private static XamlMemberInvoker s_Directive;
        private static XamlMemberInvoker s_Unknown;

        private XamlMember _member;
        private NullableReference<MethodInfo> _shouldSerializeMethod;

        protected XamlMemberInvoker()
        {
        }

        public XamlMemberInvoker(XamlMember member)
        {
            _member = member ?? throw new ArgumentNullException(nameof(member));
        }

        public static XamlMemberInvoker UnknownInvoker
        {
            get
            {
                if (s_Unknown is null)
                {
                    s_Unknown = new XamlMemberInvoker();
                }

                return s_Unknown;
            }
        }

        public MethodInfo UnderlyingGetter
        {
            get { return IsUnknown ? null : _member.Getter; }

View on GitHub (pinned to 81131a70a4)