{"record":{"id":"452d4cee8791d644","repo":"devlooped/moq","slug":"member-0-1-does-not-exist","errorCode":null,"errorMessage":"Member {0}.{1} does not exist.","messagePattern":"Member (.+?)\\.(.+?) does not exist\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Moq/Protected/ProtectedMock.cs","lineNumber":371,"sourceCode":"\n        static Expression<Action<T>> GetSetterExpression(PropertyInfo property, Expression value)\n        {\n            var param = Expression.Parameter(typeof(T), \"mock\");\n\n            return Expression.Lambda<Action<T>>(\n                Expression.Call(param, property.GetSetMethod(true), value),\n                param);\n        }\n\n#if NULLABLE_REFERENCE_TYPES\n        static void ThrowIfMemberMissing(string memberName, [NotNull] MemberInfo? member)\n#else\n        static void ThrowIfMemberMissing(string memberName, MemberInfo? member)\n#endif\n        {\n            if (member == null)\n            {\n                throw new ArgumentException(string.Format(\n                    CultureInfo.CurrentCulture,\n                    Resources.MemberMissing,\n                    typeof(T).Name,\n                    memberName));\n            }\n        }\n\n#if NULLABLE_REFERENCE_TYPES\n        static void ThrowIfMethodMissing(string methodName, [NotNull] MethodInfo? method, object[] args)\n#else\n        static void ThrowIfMethodMissing(string methodName, MethodInfo? method, object[] args)\n#endif\n        {\n            if (method == null)\n            {\n                List<string> extractedTypeNames = new List<string>();\n                foreach (object o in args)\n                {","sourceCodeStart":353,"sourceCodeEnd":389,"githubUrl":"https://github.com/devlooped/moq/blob/89a5be629c752960fe403e95ff583e4ae6f00542/src/Moq/Protected/ProtectedMock.cs#L353-L389","documentation":"ProtectedMock.ProtectedAs<T>... string-name based APIs (Setup/SetupGet/SetupSet/Verify with a member name string) look up the member on the mocked type T; ThrowIfMemberMissing throws ArgumentException with Resources.MemberMissing ('Member {0}.{1} does not exist.') when the reflection lookup returns null. It means the named member simply is not present on T with the requested accessibility.","triggerScenarios":"mock.Protected().Setup(x => x.MethodName(...)) / SetupGet(\"PropName\") / SetupSet(\"PropName\", value) where no method, property, or field with that exact name exists (non-public instance, or public — depending on the lookup overload) on T.","commonSituations":"Typo in the member-name string; member renamed in a newer library version (string-based API misses compile-time safety); member is actually public and resolved on a different path; member exists only on a base type with unexpected accessibility.","solutions":["Correct the member name string, using nameof where possible","Check the member's actual declared accessibility and name via reflection or the class source","Switch to mock.Protected().As<TAnalog>() or strong-typed Mock<T> setups to get compile-time checking","Update the name after upgrading the mocked library version"],"exampleFix":"// before\nmock.Protected().Setup<int>(\"GetValu\");\n// after\nmock.Protected().Setup<int>(\"GetValue\"); // member actually named GetValue on T","handlingStrategy":"validation","validationCode":"static bool MemberExists(Type target, string name) =>\n    target.GetMember(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance).Length > 0;","typeGuard":null,"tryCatchPattern":"try { mock.Protected().Setup<int>(\"GetValue\"); }\ncatch (ArgumentException ex) when (ex.Message.Contains(\"does not exist\")) { /* fix member-name string */ }","preventionTips":["Use nameof or constants for member-name strings to survive renames","Double-check spelling and accessibility before writing string-based protected setups","Prefer Protected().As<TAnalog>() for compile-time safety","After library upgrades, grep tests for renamed member strings"],"tags":["moq","reflection","protected-members","typo"],"backgroundTag":"entity-not-found","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"}