Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Xml / System / Xml / Serialization / XmlMembersMapping.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="XmlMembersMapping.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">Microsoft</owner>                                                                
6 //------------------------------------------------------------------------------
7
8 namespace System.Xml.Serialization {
9     using System.Reflection;
10     using System;
11     using System.Text;
12
13     /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping"]/*' />
14     ///<internalonly/>
15     /// <devdoc>
16     ///    <para>[To be supplied.]</para>
17     /// </devdoc>
18     public class XmlMembersMapping : XmlMapping {
19         XmlMemberMapping[] mappings;
20
21         internal XmlMembersMapping(TypeScope scope, ElementAccessor accessor, XmlMappingAccess access) : base(scope, accessor, access) {
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                 if (mapping.Members[i].TypeDesc.Type != null) {
28                     key.Append(GenerateKey(mapping.Members[i].TypeDesc.Type, null, null));
29                     key.Append(":");
30                 }
31                 mappings[i] = new XmlMemberMapping(mapping.Members[i]);
32             }
33             SetKeyInternal(key.ToString());
34         }
35
36         /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.TypeName"]/*' />
37         /// <devdoc>
38         ///    <para>[To be supplied.]</para>
39         /// </devdoc>
40         public string TypeName {
41             get { return Accessor.Mapping.TypeName; }
42         }
43
44         /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.TypeNamespace"]/*' />
45         /// <devdoc>
46         ///    <para>[To be supplied.]</para>
47         /// </devdoc>
48         public string TypeNamespace {
49             get { return Accessor.Mapping.Namespace; }
50         }
51
52         /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.this"]/*' />
53         /// <devdoc>
54         ///    <para>[To be supplied.]</para>
55         /// </devdoc>
56         public XmlMemberMapping this[int index] {
57             get { return mappings[index]; }
58         }
59
60         /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.Count"]/*' />
61         /// <devdoc>
62         ///    <para>[To be supplied.]</para>
63         /// </devdoc>
64         public int Count {
65             get { return mappings.Length; }
66         }
67     }
68 }