{"record":{"id":"024eb9dddafb6c1b","repo":"devlooped/moq","slug":"unhandled-binding-type-0","errorCode":null,"errorMessage":"Unhandled binding type: {0}","messagePattern":"Unhandled binding type: (.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/Moq/StringBuilderExtensions.AppendExpression.cs","lineNumber":438,"sourceCode":"                    case MemberBindingType.Assignment:\n                        var assignment = (MemberAssignment)binding;\n                        return builder.Append(assignment.Member.Name)\n                                      .Append(\"= \")\n                                      .AppendExpression(assignment.Expression);\n\n                    case MemberBindingType.MemberBinding:\n                        return b.AppendCommaSeparated(((MemberMemberBinding)binding).Bindings, AppendMemberBinding);\n\n                    case MemberBindingType.ListBinding:\n                        var original = ((MemberListBinding)binding).Initializers;\n                        for (int i = 0, n = original.Count; i < n; i++)\n                        {\n                            builder.AppendElementInit(original[i]);\n                        }\n                        return builder;\n\n                    default:\n                        throw new Exception(string.Format(Resources.UnhandledBindingType, binding.BindingType));\n                }\n            }\n        }\n\n        static StringBuilder AppendExpression(this StringBuilder builder, ListInitExpression expression)\n        {\n            return builder.AppendExpression(expression.NewExpression)\n                          .AppendCommaSeparated(\" { \", expression.Initializers, AppendElementInit, \" }\");\n        }\n\n        static StringBuilder AppendExpression(this StringBuilder builder, MatchExpression expression)\n        {\n            return builder.AppendExpression(expression.Match.RenderExpression);\n        }\n    }\n}\n","sourceCodeStart":420,"sourceCodeEnd":455,"githubUrl":"https://github.com/devlooped/moq/blob/89a5be629c752960fe403e95ff583e4ae6f00542/src/Moq/StringBuilderExtensions.AppendExpression.cs#L420-L455","documentation":"When rendering a MemberInitExpression or ListInitExpression as a string, Moq iterates the MemberBinding list and switches on binding.BindingType (MemberAssignment, MemberMemberBinding, MemberListBinding). An unrecognized binding type hits the default case and throws this Exception. It indicates a binding kind the stringifier does not handle.","triggerScenarios":"Setup/Verify/Of expressions containing nested member initializers whose binding type falls outside the three handled kinds — typically from unusual object-initializer shapes or compiler-generated bindings.","commonSituations":"Deeply nested object initializers in mocked type setups; code generated by tools; using C# features that produce binding kinds the formatter predates.","solutions":["Flatten or simplify the object initializer in the setup/verify expression so only plain assignments are used","Assign nested objects before the expression or inside a helper method instead of via nested initializers","Report/patch the missing BindingType case in Moq's AppendExpression binding switch"],"exampleFix":"// before\nmock.Verify(m => m.Foo(new Bar { Inner = { Deep = { X = 1 } } }));\n// after\nvar bar = new Bar();\nbar.Inner.Deep.X = 1;\nmock.Verify(m => m.Foo(bar));","handlingStrategy":"validation","validationCode":"// use only simple property assignments in initializers inside expressions\nmock.Verify(m => m.Foo(new Bar { A = 1, B = 2 })); // fine\n// avoid deeply nested member/list initializers inside the lambda","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Prefer building complex objects outside the expression","Keep initializers one level deep in Moq expressions","Re-test expression-heavy verifications after compiler upgrades"],"tags":["expression-tree","moq","unsupported-syntax"],"backgroundTag":"unsupported-operation","analyzedSha":"89a5be629c752960fe403e95ff583e4ae6f00542","analyzedAt":"2026-09-16T05:31:39.496Z","contentChangedAt":"2026-09-16T05:31:39.496Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}