/// <include file='doc\Attribute.uex' path='docs/doc[@for="Attribute.GetHashCode"]/*' /> public override int GetHashCode() { BCLDebug.Assert((this.GetType() as RuntimeType) != null, "Only RuntimeType's are supported"); RuntimeType runtimeType = (RuntimeType)this.GetType(); FieldInfo[] fields = runtimeType.InternalGetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, false); Object vThis = null; for (int i = 0; i < fields.Length; i++) { RuntimeFieldInfo runtimeField = fields[i] as RuntimeFieldInfo; vThis = runtimeField.InternalGetValue(this, false); if (vThis != null) { break; } } if (vThis != null) { return(vThis.GetHashCode()); } return(runtimeType.GetHashCode()); }
public static Object[] GetObjectData(Object obj, MemberInfo[] members) { if (obj == null) { throw new ArgumentNullException("obj"); } if (members == null) { throw new ArgumentNullException("members"); } int numberOfMembers = members.Length; Object[] data = new Object[numberOfMembers]; MemberInfo mi; for (int i = 0; i < numberOfMembers; i++) { mi = members[i]; if (mi == null) { throw new ArgumentNullException("members", String.Format(Environment.GetResourceString("ArgumentNull_NullMember"), i)); } if (mi.MemberType == MemberTypes.Field) { BCLDebug.Assert(mi is RuntimeFieldInfo || mi is SerializationFieldInfo, "[FormatterServices.GetObjectData]mi is RuntimeFieldInfo || mi is SerializationFieldInfo."); RuntimeFieldInfo rfi = mi as RuntimeFieldInfo; if (rfi != null) { data[i] = rfi.InternalGetValue(obj, false); } else { data[i] = ((SerializationFieldInfo)mi).InternalGetValue(obj, false); } } else { throw new SerializationException(Environment.GetResourceString("Serialization_UnknownMemberInfo")); } } return(data); }
internal Object InternalGetValue(Object obj, bool requiresAccessCheck) { return(m_field.InternalGetValue(obj, requiresAccessCheck)); }