StructMapping GetRootMapping() { if (root == null) { root = CreateRootMapping(); typeScope.AddTypeMapping(root); } return(root); }
private StructMapping GetRootMapping() { if (_root == null) { _root = CreateRootMapping(); _typeScope.AddTypeMapping(_root); } return(_root); }
StructMapping ImportStructType(XmlSchemaComplexType type, string typeNs, bool excludeFromImport) { TypeDesc baseTypeDesc = null; Mapping baseMapping = null; if (!type.DerivedFrom.IsEmpty) { baseMapping = ImportType(type.DerivedFrom, excludeFromImport); if (baseMapping is StructMapping) { baseTypeDesc = ((StructMapping)baseMapping).TypeDesc; } else { baseMapping = null; } } if (baseMapping == null) { baseMapping = GetRootMapping(); } Mapping previousMapping = (Mapping)mappings[type]; if (previousMapping != null) { return((StructMapping)previousMapping); } string typeName = GenerateUniqueTypeName(type.Name); StructMapping structMapping = new StructMapping(); TypeFlags flags = TypeFlags.Reference; if (type.IsAbstract) { flags |= TypeFlags.Abstract; } structMapping.TypeDesc = new TypeDesc(typeName, typeName, TypeKind.Struct, baseTypeDesc, flags); structMapping.Namespace = typeNs; structMapping.TypeName = type.Name; if (!excludeFromImport) { structMapping.BaseMapping = (StructMapping)baseMapping; mappings.Add(type, structMapping); } CodeIdentifiers members = new CodeIdentifiers(); members.AddReserved(typeName); structMapping.Members = ImportTypeMembers(type, typeNs, members); if (!excludeFromImport) { scope.AddTypeMapping(structMapping); } ImportDerivedTypes(new XmlQualifiedName(type.Name, typeNs)); return(structMapping); }