1 //------------------------------------------------------------------------------
2 // <copyright file="XmlMemberMapping.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 
10     using System.Reflection;
11     using System;
12     using System.CodeDom;
13     using System.CodeDom.Compiler;
14 
15     /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping"]/*' />
16     /// <internalonly/>
17     public class XmlMemberMapping {
18         MemberMapping mapping;
19 
XmlMemberMapping(MemberMapping mapping)20         internal XmlMemberMapping(MemberMapping mapping) {
21             this.mapping = mapping;
22         }
23 
24         internal MemberMapping Mapping {
25             get { return mapping; }
26         }
27 
28         internal Accessor Accessor {
29             get { return mapping.Accessor; }
30         }
31 
32         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.Any"]/*' />
33         public bool Any {
34             get { return Accessor.Any; }
35         }
36 
37         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.ElementName"]/*' />
38         /// <devdoc>
39         ///    <para>[To be supplied.]</para>
40         /// </devdoc>
41         public string ElementName {
42             get { return Accessor.UnescapeName(Accessor.Name); }
43         }
44 
45         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.XsdElementName"]/*' />
46         /// <devdoc>
47         ///    <para>[To be supplied.]</para>
48         /// </devdoc>
49         public string XsdElementName {
50             get { return Accessor.Name; }
51         }
52 
53         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.Namespace"]/*' />
54         /// <devdoc>
55         ///    <para>[To be supplied.]</para>
56         /// </devdoc>
57         public string Namespace {
58             get { return Accessor.Namespace; }
59         }
60 
61         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.MemberName"]/*' />
62         /// <devdoc>
63         ///    <para>[To be supplied.]</para>
64         /// </devdoc>
65         public string MemberName {
66             get { return mapping.Name; }
67         }
68 
69         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.TypeName"]/*' />
70         /// <devdoc>
71         ///    <para>[To be supplied.]</para>
72         /// </devdoc>
73         public string TypeName {
74             get { return Accessor.Mapping != null ? Accessor.Mapping.TypeName : String.Empty; }
75         }
76 
77         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.TypeNamespace"]/*' />
78         /// <devdoc>
79         ///    <para>[To be supplied.]</para>
80         /// </devdoc>
81         public string TypeNamespace {
82             get { return Accessor.Mapping != null ? Accessor.Mapping.Namespace : null; }
83         }
84 
85         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.TypeFullName"]/*' />
86         /// <devdoc>
87         ///    <para>[To be supplied.]</para>
88         /// </devdoc>
89         public string TypeFullName {
90             get { return mapping.TypeDesc.FullName; }
91         }
92 
93         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.CheckSpecified"]/*' />
94         /// <devdoc>
95         ///    <para>[To be supplied.]</para>
96         /// </devdoc>
97         public bool CheckSpecified {
98             get { return mapping.CheckSpecified != SpecifiedAccessor.None; }
99         }
100 
101         internal bool IsNullable {
102             get { return mapping.IsNeedNullable; }
103         }
104 
105         /// <include file='doc\XmlMemberMapping.uex' path='docs/doc[@for="XmlMemberMapping.GenerateTypeName"]/*' />
106         /// <devdoc>
107         ///    <para>[To be supplied.]</para>
108         /// </devdoc>
GenerateTypeName(CodeDomProvider codeProvider)109         public string GenerateTypeName(CodeDomProvider codeProvider) {
110             return mapping.GetTypeName(codeProvider);
111         }
112     }
113 }
114