private static void AddToList( RefactoringContext context, ExpressionSyntax expression, INamedTypeSymbol destinationType, SemanticModel semanticModel) { INamedTypeSymbol list = semanticModel.Compilation.GetTypeByMetadataName("System.Collections.Generic.List`1"); if (list != null && destinationType.ConstructedFrom == list) { INamedTypeSymbol enumerable = semanticModel.Compilation.GetTypeByMetadataName("System.Linq.Enumerable"); if (enumerable != null) { AddToMethodInvocationRefactoring.ComputeRefactoring(context, expression, enumerable, "ToList"); } } }
private static void AddToArray( RefactoringContext context, ExpressionSyntax expression, IArrayTypeSymbol arrayType, SemanticModel semanticModel) { ITypeSymbol expressionType = semanticModel.GetTypeInfo(expression, context.CancellationToken).Type; if (expressionType?.IsNamedType() == true) { INamedTypeSymbol constructedFrom = ((INamedTypeSymbol)expressionType).ConstructedFrom; if (constructedFrom.SpecialType == SpecialType.System_Collections_Generic_IEnumerable_T || constructedFrom.Implements(SpecialType.System_Collections_Generic_IEnumerable_T)) { INamedTypeSymbol enumerable = semanticModel.Compilation.GetTypeByMetadataName("System.Linq.Enumerable"); if (enumerable != null) { AddToMethodInvocationRefactoring.ComputeRefactoring(context, expression, enumerable, "ToArray"); } } } }
private static bool AddToMethodInvocation( RefactoringContext context, ExpressionSyntax expression, ITypeSymbol destinationType, SemanticModel semanticModel) { if (destinationType.IsString()) { AddToMethodInvocationRefactoring.ComputeRefactoring(context, expression, destinationType, "ToString"); return(true); } else if (destinationType.IsArrayType()) { AddToArray(context, expression, (IArrayTypeSymbol)destinationType, semanticModel); return(true); } else if (destinationType.IsNamedType()) { AddToList(context, expression, (INamedTypeSymbol)destinationType, semanticModel); return(true); } return(false); }