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