{"record":{"id":"b2350c9720968ef5","repo":"JamesNK/Newtonsoft.Json","slug":"memberinfo-0-must-be-of-type-fieldinfo-or-prop","errorCode":null,"errorMessage":"MemberInfo '{0}' must be of type FieldInfo or PropertyInfo","messagePattern":"MemberInfo '(.+?)' must be of type FieldInfo or PropertyInfo","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs","lineNumber":573,"sourceCode":"        /// </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);\n                    break;\n                case MemberTypes.Property:\n                    ((PropertyInfo)member).SetValue(target, value, null);\n                    break;\n                default:\n                    throw new ArgumentException(\"MemberInfo '{0}' must be of type FieldInfo or PropertyInfo\".FormatWith(CultureInfo.InvariantCulture, member.Name), nameof(member));\n            }\n        }\n\n        /// <summary>\n        /// Determines whether the specified MemberInfo can be read.\n        /// </summary>\n        /// <param name=\"member\">The MemberInfo to determine whether can be read.</param>\n        /// /// <param name=\"nonPublic\">if set to <c>true</c> then allow the member to be gotten non-publicly.</param>\n        /// <returns>\n        /// \t<c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool CanReadMemberValue(MemberInfo member, bool nonPublic)\n        {\n            switch (member.MemberType())\n            {\n                case MemberTypes.Field:\n                    FieldInfo fieldInfo = (FieldInfo)member;\n","sourceCodeStart":555,"sourceCodeEnd":591,"githubUrl":"https://github.com/JamesNK/Newtonsoft.Json/blob/4f73e74372445108d2c1bda37b36e6f5e43402e0/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs#L555-L591","documentation":"Thrown by ReflectionUtils.SetMemberValue's default case when the member is neither a Field nor a Property. Only fields and properties support value assignment through this helper; methods, events, and other members have no settable value.","triggerScenarios":"Calling SetMemberValue on a MethodInfo, EventInfo, or any member whose MemberType is not Field/Property.","commonSituations":"Generic member-setting utilities that iterate all members without filtering by MemberType, or code that treats methods/events as assignment targets.","solutions":["Filter to FieldInfo/PropertyInfo before calling SetMemberValue.","Use the specific member API for other kinds (MethodInfo.Invoke, EventInfo.AddEventHandler).","Prefer GetFields()/GetProperties() over GetMembers() when iterating settable targets."],"exampleFix":"// before\nReflectionUtils.SetMemberValue(member, target, value);\n\n// after\nswitch (member)\n{\n    case FieldInfo f:    f.SetValue(target, value); break;\n    case PropertyInfo p: p.SetValue(target, value, null); break;\n    default: throw new InvalidOperationException($\"Cannot set {member.MemberType}\");\n}","handlingStrategy":"type-guard","validationCode":"if (member is not FieldInfo and not PropertyInfo)\n    throw new ArgumentException($\"{member.MemberType} is not settable.\");","typeGuard":"static bool IsValueWritable(MemberInfo m) => m is FieldInfo or PropertyInfo;","tryCatchPattern":null,"preventionTips":["Filter to Field/Property before calling SetMemberValue.","Use GetFields()/GetProperties() instead of GetMembers().","Use MethodInfo.Invoke / EventInfo.AddEventHandler for other member kinds."],"tags":["reflection","member","value","member-type"],"analyzedSha":"4f73e74372445108d2c1bda37b36e6f5e43402e0","analyzedAt":"2026-08-07T06:10:08.596Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}