1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Reflection; 6 using System; 7 using System.Text; 8 9 10 namespace System.Xml.Serialization 11 { 12 ///<internalonly/> 13 /// <devdoc> 14 /// <para>[To be supplied.]</para> 15 /// </devdoc> 16 public class XmlMembersMapping : XmlMapping 17 { 18 private XmlMemberMapping[] _mappings; 19 XmlMembersMapping(TypeScope scope, ElementAccessor accessor, XmlMappingAccess access)20 internal XmlMembersMapping(TypeScope scope, ElementAccessor accessor, XmlMappingAccess access) : base(scope, accessor, access) 21 { 22 MembersMapping mapping = (MembersMapping)accessor.Mapping; 23 StringBuilder key = new StringBuilder(); 24 key.Append(":"); 25 _mappings = new XmlMemberMapping[mapping.Members.Length]; 26 for (int i = 0; i < _mappings.Length; i++) 27 { 28 if (mapping.Members[i].TypeDesc.Type != null) 29 { 30 key.Append(GenerateKey(mapping.Members[i].TypeDesc.Type, null, null)); 31 key.Append(":"); 32 } 33 _mappings[i] = new XmlMemberMapping(mapping.Members[i]); 34 } 35 SetKeyInternal(key.ToString()); 36 } 37 38 /// <devdoc> 39 /// <para>[To be supplied.]</para> 40 /// </devdoc> 41 public string TypeName 42 { 43 get { return Accessor.Mapping.TypeName; } 44 } 45 46 /// <devdoc> 47 /// <para>[To be supplied.]</para> 48 /// </devdoc> 49 public string TypeNamespace 50 { 51 get { return Accessor.Mapping.Namespace; } 52 } 53 54 /// <devdoc> 55 /// <para>[To be supplied.]</para> 56 /// </devdoc> 57 public XmlMemberMapping this[int index] 58 { 59 get { return _mappings[index]; } 60 } 61 62 /// <devdoc> 63 /// <para>[To be supplied.]</para> 64 /// </devdoc> 65 public int Count 66 { 67 get { return _mappings.Length; } 68 } 69 } 70 } 71