internal URTComplexType(String name, String urlNS, String ns, String encodedNS, SchemaBlockType blockDefault, bool bSUDSType, bool bAnonymous, WsdlParser parser, URTNamespace xns) : base(name, urlNS, ns, encodedNS) { Util.Log("URTComplexType.URTComplexType name "+this.GetHashCode()+" "+name+" urlNS "+urlNS+" ns "+ns+" encodedNS "+encodedNS+" bSUDStype "+bSUDSType+" bAnonymous "+bAnonymous); _baseTypeName = null; _baseTypeXmlNS = null; _baseType = null; _connectURLs = null; _bStruct = !bSUDSType; _blockType = blockDefault; _bSUDSType = bSUDSType; _bAnonymous = bAnonymous; Debug.Assert(bAnonymous == false || _bSUDSType == false); _fieldString = null; _fields = new ArrayList(); _methods = new ArrayList(); _implIFaces = new ArrayList(); _implIFaceNames = new ArrayList(); _sudsType = SUDSType.None; _parser = parser; int index = name.IndexOf('+'); if (index > 0) { // Nested type see if outer type has been added to namespace String outerType = parser.Atomize(name.Substring(0,index)); URTComplexType cs = xns.LookupComplexType(outerType); if (cs == null) { URTComplexType newCs = new URTComplexType(outerType, urlNS, ns, encodedNS, blockDefault, bSUDSType, bAnonymous, parser, xns); Util.Log("URTComplexType.URTComplexType add outerType to namespace "+outerType+" nestedname "+name); xns.AddComplexType(newCs); } } if (xns.UrtType == UrtType.Interop) { // Interop class names can have '.', replace these with '_', and set wire name to original type name. index = name.LastIndexOf('.'); if (index > -1) { // class names can't have '.' so replace with '$'. Use xmlType attribute to send original name on wire. _wireType = name; Name = name.Replace(".", "_"); SearchName = name; } } }