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 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using System.Runtime.Remoting;
35 using System.Runtime.Remoting.Metadata;
37 namespace System.Runtime.Remoting.Metadata {
39 [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct |
40 AttributeTargets.Enum | AttributeTargets.Interface)]
41 public sealed class SoapTypeAttribute : SoapAttribute
43 SoapOption _soapOption;
45 string _xmlElementName;
46 XmlFieldOrderOption _xmlFieldOrder;
49 string _xmlTypeNamespace;
53 public SoapTypeAttribute ()
57 public SoapOption SoapOptions {
67 public override bool UseAttribute {
73 _useAttribute = value;
77 public string XmlElementName {
79 return _xmlElementName;
83 _isElement = value != null;
84 _xmlElementName = value;
88 public XmlFieldOrderOption XmlFieldOrder {
90 return _xmlFieldOrder;
94 _xmlFieldOrder = value;
98 public override string XmlNamespace {
100 return _xmlNamespace;
104 _isElement = value != null;
105 _xmlNamespace = value;
109 public string XmlTypeName {
115 _isType = value != null;
116 _xmlTypeName = value;
120 public string XmlTypeNamespace {
122 return _xmlTypeNamespace;
126 _isType = value != null;
127 _xmlTypeNamespace = value;
131 internal bool IsInteropXmlElement
133 get { return _isElement; }
136 internal bool IsInteropXmlType
138 get { return _isType; }
141 internal override void SetReflectionObject (object reflectionObject)
143 Type type = (Type) reflectionObject;
145 if (_xmlElementName == null)
146 _xmlElementName = type.Name;
148 if (_xmlTypeName == null)
149 _xmlTypeName = type.Name;
151 if (_xmlTypeNamespace == null)
154 if (type.Assembly == typeof (object).Assembly) na = string.Empty;
155 else na = type.Assembly.GetName().Name;
156 _xmlTypeNamespace = SoapServices.CodeXmlNamespaceForClrTypeNamespace (type.Namespace, na);
159 if (_xmlNamespace == null)
160 _xmlNamespace = _xmlTypeNamespace;