unoplatform/uno · error · NotSupportedException

Current operation is invalid for unknown member.

Error message

Current operation is invalid for unknown member.

What it means

Thrown by XamlMemberInvoker.ThrowIfUnknown when an operation (GetValue/SetValue) is attempted on an invoker whose member field is null — i.e. the UnknownInvoker singleton or a default-constructed invoker. Unknown members have no backing CLR member to get or set, so the operation is meaningless.

Source

Thrown at src/SourceGenerators/System.Xaml/System.Xaml.Schema/XamlMemberInvoker.cs:61

			if (member == null)
				throw new ArgumentNullException ("member");
			this.member = member;
		}

		XamlMember member;

		public MethodInfo UnderlyingGetter {
			get { return member != null ? member.UnderlyingGetter : null; }
		}

		public MethodInfo UnderlyingSetter {
			get { return member != null ? member.UnderlyingSetter : null; }
		}

		void ThrowIfUnknown ()
		{
			if (member == null)
				throw new NotSupportedException ("Current operation is invalid for unknown member.");
		}

		public virtual object GetValue (object instance)
		{
			ThrowIfUnknown ();
			if (instance == null)
				throw new ArgumentNullException ("instance");
			if (member is XamlDirective)
				throw new NotSupportedException (String.Format (CultureInfo.InvariantCulture, "not supported operation on directive member {0}", member));
			if (UnderlyingGetter == null)
				throw new NotSupportedException (String.Format (CultureInfo.InvariantCulture, "Attempt to get value from write-only property or event {0}", member));
			return UnderlyingGetter.Invoke (instance, Array.Empty<object>());
		}
		public virtual void SetValue (object instance, object value)
		{
			ThrowIfUnknown ();
			if (instance == null)
				throw new ArgumentNullException ("instance");

View on GitHub (pinned to 0418340488)

Solutions

  1. Check member.IsUnknown (or invoker == XamlMemberInvoker.UnknownInvoker) before calling GetValue/SetValue and skip or log unknown members.
  2. Fix the underlying resolution: declare the member, register the attached property, or correct the XAML namespace.
  3. Use a custom XamlMemberInvoker subclass that supplies a sensible behavior for unknown members.

Example fix

// before
invoker.SetValue(instance, value); // throws if unknown

// after
if (member.IsUnknown)
    logger.LogWarning($"Skipping unknown member {member}");
else
    invoker.SetValue(instance, value);
Defensive patterns

Strategy: type-guard

Validate before calling

if (member.IsUnknown || invoker == XamlMemberInvoker.UnknownInvoker)
{
    logger.LogWarning($"Skipping unknown member {member}");
    return;
}
invoker.SetValue(instance, value);

Type guard

static bool IsKnownMember(XamlMember m) => m != null && !m.IsUnknown;

Prevention

When it happens

Trigger: Calling GetValue or SetValue on XamlMemberInvoker.UnknownInvoker, or on an invoker created via the protected parameterless constructor. Triggered when a XamlMember was unknown and its Invoker defaulted to UnknownInvoker.

Common situations: XAML containing members that did not resolve against the schema context (typo, missing reference, attached property not registered); generic XAML processors that blindly invoke every member.

Related errors


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