System.Runtime.Serialization.FormatterServices.PopulateObjectMembers C# (CSharp) Method

PopulateObjectMembers() public static method

public static PopulateObjectMembers ( object obj, MemberInfo members, object data ) : object
obj object
members System.Reflection.MemberInfo
data object
return object
        public static object PopulateObjectMembers(object obj, MemberInfo[] members, object[] data)
        {
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }
            if (members == null)
            {
                throw new ArgumentNullException(nameof(members));
            }
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (members.Length != data.Length)
            {
                throw new ArgumentException(SR.Argument_DataLengthDifferent);
            }

            for (int i = 0; i < members.Length; i++)
            {
                MemberInfo member = members[i];
                if (member == null)
                {
                    throw new ArgumentNullException(nameof(members), SR.Format(SR.ArgumentNull_NullMember, i));
                }

                // If we find an empty, it means that the value was never set during deserialization.
                // This is either a forward reference or a null.  In either case, this may break some of the
                // invariants mantained by the setter, so we'll do nothing with it for right now.
                object value = data[i];
                if (value == null)
                {
                    continue;
                }

                // If it's a field, set its value.
                FieldInfo field = member as FieldInfo;
                if (field != null)
                {
                    field.SetValue(obj, data[i]);
                    continue;
                }

                // Otherwise, it's not supported.
                throw new SerializationException(SR.Serialization_UnknownMemberInfo);
            }

            return obj;
        }

Same methods

FormatterServices::PopulateObjectMembers ( object obj, System members, object data ) : object

Usage Example

コード例 #1
0
 public static object PopulateObjectMembers(object obj, MemberInfo[] members, object[] data)
 {
     return(RuntimeFormatterServices.PopulateObjectMembers(obj, members, data));
 }