2 // System.Runtime.Remoting.Metadata.SoapTypeAttribute.cs
4 // Author: Duncan Mak (duncan@ximian.com)
5 // Lluis Sanchez Gual (lluis@ximian.com)
7 // 2002 (C) Copyright, Ximian, Inc.
11 using System.Runtime.Remoting;
12 using System.Runtime.Remoting.Metadata;
14 namespace System.Runtime.Remoting.Metadata {
16 [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct |
17 AttributeTargets.Enum | AttributeTargets.Interface)]
18 public sealed class SoapTypeAttribute : SoapAttribute
20 SoapOption _soapOption;
22 string _xmlElementName;
23 XmlFieldOrderOption _xmlFieldOrder;
26 string _xmlTypeNamespace;
30 public SoapTypeAttribute ()
34 public SoapOption SoapOptions {
44 public override bool UseAttribute {
50 _useAttribute = value;
54 public string XmlElementName {
56 return _xmlElementName;
60 _isElement = value != null;
61 _xmlElementName = value;
65 public XmlFieldOrderOption XmlFieldOrder {
67 return _xmlFieldOrder;
71 _xmlFieldOrder = value;
75 public override string XmlNamespace {
81 _isElement = value != null;
82 _xmlNamespace = value;
86 public string XmlTypeName {
92 _isType = value != null;
97 public string XmlTypeNamespace {
99 return _xmlTypeNamespace;
103 _isType = value != null;
104 _xmlTypeNamespace = value;
108 internal bool IsInteropXmlElement
110 get { return _isElement; }
113 internal bool IsInteropXmlType
115 get { return _isType; }
118 internal override void SetReflectionObject (object reflectionObject)
120 Type type = (Type) reflectionObject;
122 if (_xmlElementName == null)
123 _xmlElementName = type.Name;
125 if (_xmlTypeName == null)
126 _xmlTypeName = type.Name;
128 if (_xmlTypeNamespace == null)
131 if (type.Assembly == typeof (object).Assembly) na = string.Empty;
132 else na = type.Assembly.GetName().Name;
133 _xmlTypeNamespace = SoapServices.CodeXmlNamespaceForClrTypeNamespace (type.Namespace, na);
136 if (_xmlNamespace == null)
137 _xmlNamespace = _xmlTypeNamespace;