{"record":{"id":"71194a12fb05d5ea","repo":"JamesNK/Newtonsoft.Json","slug":"memberinfo-0-is-not-of-type-fieldinfo-or-prope","errorCode":null,"errorMessage":"MemberInfo '{0}' is not of type FieldInfo or PropertyInfo","messagePattern":"MemberInfo '(.+?)' is not of type FieldInfo or PropertyInfo","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs","lineNumber":549,"sourceCode":"        {\n            ValidationUtils.ArgumentNotNull(member, nameof(member));\n            ValidationUtils.ArgumentNotNull(target, nameof(target));\n\n            switch (member.MemberType())\n            {\n                case MemberTypes.Field:\n                    return ((FieldInfo)member).GetValue(target);\n                case MemberTypes.Property:\n                    try\n                    {\n                        return ((PropertyInfo)member).GetValue(target, null);\n                    }\n                    catch (TargetParameterCountException e)\n                    {\n                        throw new ArgumentException(\"MemberInfo '{0}' has index parameters\".FormatWith(CultureInfo.InvariantCulture, member.Name), e);\n                    }\n                default:\n                    throw new ArgumentException(\"MemberInfo '{0}' is not of type FieldInfo or PropertyInfo\".FormatWith(CultureInfo.InvariantCulture, member.Name), nameof(member));\n            }\n        }\n\n        /// <summary>\n        /// Sets the member's value on the target object.\n        /// </summary>\n        /// <param name=\"member\">The member.</param>\n        /// <param name=\"target\">The target.</param>\n        /// <param name=\"value\">The value.</param>\n        public static void SetMemberValue(MemberInfo member, object target, object? value)\n        {\n            ValidationUtils.ArgumentNotNull(member, nameof(member));\n            ValidationUtils.ArgumentNotNull(target, nameof(target));\n\n            switch (member.MemberType())\n            {\n                case MemberTypes.Field:\n                    ((FieldInfo)member).SetValue(target, value);","sourceCodeStart":531,"sourceCodeEnd":567,"githubUrl":"https://github.com/JamesNK/Newtonsoft.Json/blob/4f73e74372445108d2c1bda37b36e6f5e43402e0/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs#L531-L567","documentation":"Thrown by ReflectionUtils.GetMemberValue's default case when the member is neither a Field nor a Property. Only fields and properties can be read as values through this helper; methods, events, and other members fall through.","triggerScenarios":"Calling GetMemberValue on a MethodInfo, EventInfo, or any member whose MemberType is not Field/Property.","commonSituations":"Generic member-walking utilities that iterate GetMembers() without filtering by MemberType, or code that assumes all members are value-bearing.","solutions":["Filter to FieldInfo/PropertyInfo before calling GetMemberValue.","Handle other member kinds via their specific GetValue/Invoke APIs.","Use GetFields() and GetProperties() instead of the broad GetMembers()."],"exampleFix":"// before\nvar v = ReflectionUtils.GetMemberValue(member, target);\n\n// after\nvar v = member switch\n{\n    FieldInfo f    => f.GetValue(target),\n    PropertyInfo p => p.GetValue(target, null),\n    _ => throw new InvalidOperationException($\"Cannot read {member.MemberType}\")\n};","handlingStrategy":"type-guard","validationCode":"if (member is not FieldInfo and not PropertyInfo)\n    throw new ArgumentException($\"{member.MemberType} is not value-bearing.\");","typeGuard":"static bool IsValueReadable(MemberInfo m) => m is FieldInfo or PropertyInfo;","tryCatchPattern":null,"preventionTips":["Filter to Field/Property before calling GetMemberValue.","Use GetFields()/GetProperties() instead of GetMembers().","Handle methods/events via their own Invoke/AddEventHandler APIs."],"tags":["reflection","member","value","member-type"],"analyzedSha":"4f73e74372445108d2c1bda37b36e6f5e43402e0","analyzedAt":"2026-08-07T06:10:08.596Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}