internal int Add(string name, SchemaImporterExtension extension)
 {
     if (Names[name] != null)
     {
         if (Names[name].GetType() != extension.GetType())
         {
             throw new InvalidOperationException(string.Format(ResXml.XmlConfigurationDuplicateExtension, name));
         }
         return(-1);
     }
     Names[name] = extension;
     return(List.Add(extension));
 }
        internal CodeTypeDeclaration ExportTypeDefinition(CodeNamespace codeNamespace, CodeCompileUnit codeCompileUnit)
        {
            if (_exported)
            {
                return(null);
            }
            _exported = true;

            foreach (CodeNamespaceImport import in _code.Imports)
            {
                codeNamespace.Imports.Add(import);
            }
            CodeTypeDeclaration codeClass = null;
            string comment = string.Format(ResXml.XmlExtensionComment, _extension.GetType().FullName);

            foreach (CodeTypeDeclaration type in _code.Types)
            {
                if (_clrType == type.Name)
                {
                    if (codeClass != null)
                    {
                        throw new InvalidOperationException(string.Format(ResXml.XmlExtensionDuplicateDefinition, _extension.GetType().FullName, _clrType));
                    }
                    codeClass = type;
                }
                type.Comments.Add(new CodeCommentStatement(comment, false));
                codeNamespace.Types.Add(type);
            }
            if (codeCompileUnit != null)
            {
                foreach (string reference in ReferencedAssemblies)
                {
                    if (codeCompileUnit.ReferencedAssemblies.Contains(reference))
                    {
                        continue;
                    }
                    codeCompileUnit.ReferencedAssemblies.Add(reference);
                }
            }
            return(codeClass);
        }
 public int Add(SchemaImporterExtension extension)
 {
     return(Add(extension.GetType().FullName, extension));
 }