protected virtual void AddMember(MemberInfo memberInfo, TypeSerializerCache cache, SerializerOptions options) { SerializationMemberInfo localSerializationMemberInfo; if (this.MemberBound && this.serializationMemberInfo.IncludeIfUnattributed) { bool ok; var fieldInfo = memberInfo as FieldInfo; var propertyInfo = memberInfo as PropertyInfo; if (fieldInfo != null && fieldInfo.IsPublic) { ok = true; } else if (propertyInfo != null && propertyInfo.CanRead && propertyInfo.CanWrite && propertyInfo.GetSetMethod().IsPublic && propertyInfo.GetGetMethod().IsPublic) { ok = true; } else { ok = false; } if (ok) { localSerializationMemberInfo = new SerializationMemberInfo(memberInfo, options, cache, true); elementMembersMap[localSerializationMemberInfo.SerializedName] = localSerializationMemberInfo; return; } } localSerializationMemberInfo = new SerializationMemberInfo(memberInfo, options, cache); if (localSerializationMemberInfo.SerializedNodeType == XmlNodeType.Element) { if (localSerializationMemberInfo.Namespace.Length > 0) { elementMembersMap[localSerializationMemberInfo.Namespace + (char)0xff + localSerializationMemberInfo.SerializedName] = localSerializationMemberInfo; } else { elementMembersMap[localSerializationMemberInfo.SerializedName] = localSerializationMemberInfo; } return; } else if (localSerializationMemberInfo.SerializedNodeType == XmlNodeType.Attribute) { if (localSerializationMemberInfo.Namespace.Length > 0) { attributeMembersMap[localSerializationMemberInfo.Namespace + (char)0xff + localSerializationMemberInfo.SerializedName] = localSerializationMemberInfo; } else { attributeMembersMap[localSerializationMemberInfo.SerializedName] = localSerializationMemberInfo; } } else if (localSerializationMemberInfo.SerializedNodeType == XmlNodeType.Text) { if (TextMember != null && !TextMember.Equals(localSerializationMemberInfo)) { throw new Exception(string.Format("There should only be one XmlTextAttribute in type {0}", ((Type)this.serializationMemberInfo.MemberInfo).FullName)); } TextMember = localSerializationMemberInfo; } }