将MethodDeclarationSyntax转换为ConstructorDeclarationSyntax的规范方法
本文关键字:范方法 方法 MethodDeclarationSyntax 转换 ConstructorDeclarationSyntax | 更新日期: 2023-09-27 18:17:39
我正在为API迁移(AutoMapper V5 Profiles)编写分析器和代码修复,将protected override Configure
方法转换为构造函数:
public class MappingProfile : Profile
{
protected override Configure()
{
CreateMap<Foo, Bar>();
RecognizePrefix("m_");
}
}
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Foo, Bar>();
RecognizePrefix("m_");
}
}
我已经找到了一种将方法节点转换为构造函数的方法,但是我一直在努力使空格正确。如果我没有忽略将方法转换为构造函数的一种更简单的方法,那么问题就来了。
所以我的问题是:Roslyn已经给了你一个重构将MethodDeclarationSyntax
转换为ConstructorDeclarationSyntax
吗?或者有比这个LINQPad脚本更简单的方法
在CodeFix中,只需添加格式化器注释:
SyntaxFactory
.ConstructorDeclaration(constructorIdentifier)
.WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword)))
.WithAttributeLists(oldMethodNode.AttributeLists)
.WithParameterList(newParameterList)
.WithBody(newBody)
.WithTriviaFrom(oldMethodNode)
.WithAdditionalAnnotations(Formatter.Annotation)
这足以在代码修复中完成任务,因为代码修复基础结构将处理注释。
在CodeFix之外,您可以使用Microsoft.CodeAnalysis.Formatting
中的Formatter.Format()
显式地处理注释。