{"record":{"id":"8430b91b2089d6ec","repo":"dotnet/maui","slug":"unhandled-binding-type-0","errorCode":null,"errorMessage":"Unhandled binding type '{0}'","messagePattern":"Unhandled binding type '(.+?)'","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Compatibility/Core/src/WPF/WPFExpressionSearch.cs","lineNumber":139,"sourceCode":"\t\t\t\t\tthrow new ArgumentException(string.Format(\"Unhandled expression type: '{0}'\", expression.NodeType));\n\t\t\t}\n\t\t}\n\n\t\tvoid VisitBinding(MemberBinding binding)\n\t\t{\n\t\t\tswitch (binding.BindingType)\n\t\t\t{\n\t\t\t\tcase MemberBindingType.Assignment:\n\t\t\t\t\tVisit(((MemberAssignment)binding).Expression);\n\t\t\t\t\tbreak;\n\t\t\t\tcase MemberBindingType.MemberBinding:\n\t\t\t\t\tVisitList(((MemberMemberBinding)binding).Bindings, VisitBinding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase MemberBindingType.ListBinding:\n\t\t\t\t\tVisitList(((MemberListBinding)binding).Initializers, initializer => VisitList(initializer.Arguments, Visit));\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new ArgumentException(string.Format(\"Unhandled binding type '{0}'\", binding.BindingType));\n\t\t\t}\n\t\t}\n\n\t\tstatic void VisitList<TList>(IEnumerable<TList> list, Action<TList> visitor)\n\t\t{\n\t\t\tforeach (TList element in list)\n\t\t\t{\n\t\t\t\tvisitor(element);\n\t\t\t}\n\t\t}\n\n\t\t// All important magic happens here\n\t\tvoid VisitMemberAccess(MemberExpression member)\n\t\t{\n\t\t\tif (member.Expression is ConstantExpression && member.Member is FieldInfo)\n\t\t\t{\n\t\t\t\tobject container = ((ConstantExpression)member.Expression).Value;\n\t\t\t\tobject value = ((FieldInfo)member.Member).GetValue(container);","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/dotnet/maui/blob/f377ff1c5ee04d334d8a925f50c83a6b7afddf03/src/Compatibility/Core/src/WPF/WPFExpressionSearch.cs#L121-L157","documentation":"Thrown by WPFExpressionSearch.VisitBinding when the MemberBinding.BindingType is not one of Assignment, MemberBinding, or ListBinding. This is the inner visitor for member-initializer bindings within a MemberInitExpression. Any unhandled binding type hits the default throw.","triggerScenarios":"Passing an expression containing a MemberInitExpression with a member binding type not in the handled set. Currently all three standard MemberBindingType values (Assignment, MemberBinding, ListBinding) are handled, so this is extremely rare — it would require a custom MemberBinding subclass or a future ExpressionType extension.","commonSituations":"Almost never triggered in practice because the .NET BCL only defines three MemberBindingType values. Could occur with a custom expression-visitor or reflection-emit generated expression trees that introduce non-standard bindings.","solutions":["Verify the expression does not contain custom or non-standard member bindings.","Simplify the expression to avoid MemberInit with unusual bindings.","If extending the expression framework, add a case for the new binding type in VisitBinding."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try\n{\n    search.FindMembers(expr);\n}\ncatch (ArgumentException ex) when (ex.Message.Contains(\"Unhandled binding type\"))\n{\n    // simplify expression and retry, or log unsupported binding","preventionTips":["Avoid member-init expressions with unusual bindings in visitor-traversed expression trees.","Test custom LINQ expressions against the WPF visitor before deployment."],"tags":["wpf","expressions","linq","expression-tree","member-binding"],"backgroundTag":null,"analyzedSha":"f377ff1c5ee04d334d8a925f50c83a6b7afddf03","analyzedAt":"2026-08-13T14:26:18.069Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}