XmlMembersMapping.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. namespace System.Xml.Serialization {
  8. using System.Reflection;
  9. using System;
  10. using System.Text;
  11. /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping"]/*' />
  12. ///<internalonly/>
  13. /// <devdoc>
  14. /// <para>[To be supplied.]</para>
  15. /// </devdoc>
  16. public class XmlMembersMapping : XmlMapping {
  17. XmlMemberMapping[] mappings;
  18. internal XmlMembersMapping(TypeScope scope, ElementAccessor accessor, XmlMappingAccess access) : base(scope, accessor, access) {
  19. MembersMapping mapping = (MembersMapping)accessor.Mapping;
  20. StringBuilder key = new StringBuilder();
  21. key.Append(":");
  22. mappings = new XmlMemberMapping[mapping.Members.Length];
  23. for (int i = 0; i < mappings.Length; i++) {
  24. if (mapping.Members[i].TypeDesc.Type != null) {
  25. key.Append(GenerateKey(mapping.Members[i].TypeDesc.Type, null, null));
  26. key.Append(":");
  27. }
  28. mappings[i] = new XmlMemberMapping(mapping.Members[i]);
  29. }
  30. SetKeyInternal(key.ToString());
  31. }
  32. /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.TypeName"]/*' />
  33. /// <devdoc>
  34. /// <para>[To be supplied.]</para>
  35. /// </devdoc>
  36. public string TypeName {
  37. get { return Accessor.Mapping.TypeName; }
  38. }
  39. /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.TypeNamespace"]/*' />
  40. /// <devdoc>
  41. /// <para>[To be supplied.]</para>
  42. /// </devdoc>
  43. public string TypeNamespace {
  44. get { return Accessor.Mapping.Namespace; }
  45. }
  46. /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.this"]/*' />
  47. /// <devdoc>
  48. /// <para>[To be supplied.]</para>
  49. /// </devdoc>
  50. public XmlMemberMapping this[int index] {
  51. get { return mappings[index]; }
  52. }
  53. /// <include file='doc\XmlMembersMapping.uex' path='docs/doc[@for="XmlMembersMapping.Count"]/*' />
  54. /// <devdoc>
  55. /// <para>[To be supplied.]</para>
  56. /// </devdoc>
  57. public int Count {
  58. get { return mappings.Length; }
  59. }
  60. }
  61. }