private static NamespaceDeclarationSyntax AddParameterClassToNamespaceAndUpdateClassToUseNamespace(NamespaceDeclarationSyntax oldNamespace, ClassDeclarationSyntax oldClass, MethodDeclarationSyntax oldMethod) { var className = $"NewClass{oldMethod.Identifier.Text}"; var newParameterClass = CreateParameterClass(className, oldMethod); var newNamespace = oldNamespace.ReplaceNode(oldClass, UpdateClassToUseNewParameterClass(className, oldClass, oldMethod)) .AddMembers(newParameterClass); return newNamespace; }
private static NamespaceDeclarationSyntax NewNameSpaceFactory(NamespaceDeclarationSyntax OldNameSpace, ClassDeclarationSyntax OldClass, MethodDeclarationSyntax OldMethod) { var newNameSpace = OldNameSpace; var className = $"NewClass{OldMethod.Identifier.Text}"; var memberNameSpaceOld = (from member in OldNameSpace.Members where member == OldClass select member).FirstOrDefault(); newNameSpace = OldNameSpace.ReplaceNode(memberNameSpaceOld, NewClassFactory(className, OldClass, OldMethod)); var newParameterClass = NewClassParameterFactory(className, NewPropertyClassFactory(OldMethod)); newNameSpace = newNameSpace .WithMembers(newNameSpace.Members.Add(newParameterClass)) .WithAdditionalAnnotations(Formatter.Annotation); return newNameSpace; }