private void ReplaceImportStatements() { HashSet <string> alreadyAddedImportsStatements = new HashSet <string>(); IEnumerable <ImportsStatementSyntax> importsStatementNodes = tree.GetRoot().DescendantNodes().OfType <ImportsStatementSyntax>(); foreach (ImportsStatementSyntax oldImportsStatementNode in importsStatementNodes) // iterate over all qualified names in the file { // could be problems if this import statement isn't simple, however even if an alias is used in the import it's still simple SimpleImportsClauseSyntax oldSimpleImportsNode = oldImportsStatementNode.DescendantNodes().OfType <SimpleImportsClauseSyntax>().First(); var oldNamespace = oldSimpleImportsNode.WithoutTrivia().Name.GetText().ToString(); List <namespace_map> namespaces = NSMappingSQLConnector.GetInstance().GetNamespaceMapsFromOldNamespace(TransformProject.sdkId, oldNamespace); if (namespaces != null) { foreach (namespace_map nsMap in namespaces) { var newNamespace = nsMap.new_namespace; if (!alreadyAddedImportsStatements.Contains(newNamespace)) { alreadyAddedImportsStatements.Add(newNamespace); NameSyntax newIdentifierNode = IdentifierName(newNamespace); var newSimpleImportsNode = oldSimpleImportsNode.WithName(newIdentifierNode); SeparatedSyntaxList <ImportsClauseSyntax> simpleImportsList = new SeparatedSyntaxList <ImportsClauseSyntax>().Add(newSimpleImportsNode); ImportsStatementSyntax newImportsStatementNode = ImportsStatement(simpleImportsList).WithTriviaFrom(oldImportsStatementNode); newImportsStatementNode = newImportsStatementNode.WithImportsKeyword(oldImportsStatementNode.ImportsKeyword); documentEditor.InsertAfter(oldImportsStatementNode, newImportsStatementNode); } } documentEditor.RemoveNode(oldImportsStatementNode); } } }
/// <summary> /// Interpreta una cláusula using /// </summary> private void ParseUsing(SyntaxNode objNode, LanguageStructModel objParent) { SimpleImportsClauseSyntax objUsing = objNode as SimpleImportsClauseSyntax; // Añade el nombre a la lista de cadenas "Using" if (objUsing != null) { base.AddUsing(objNode, objParent, objUsing.Name.ToFullString()); } }
/// <summary> /// Interpreta una cláusula using /// </summary> private void ParseUsing(SyntaxNode node, LanguageStructModel parent) { SimpleImportsClauseSyntax usingDef = node as SimpleImportsClauseSyntax; // Añade el nombre a la lista de cadenas "Using" if (usingDef != null) { AddUsing(node, parent, usingDef.Name.ToFullString()); } }