【发布时间】:2019-08-07 14:14:17
【问题描述】:
我几乎找不到关于 Roslyn 的好文档,如果我遗漏了什么,请原谅我,这应该是显而易见的。 我正在解析一些代码,我的目标是从一个类中提取每个可序列化的字段。
到目前为止,我所拥有的是这个。首先我解析代码文件
SyntaxTree tree = CSharpSyntaxTree.ParseText(programText);
CSharpCompilation compilation = CSharpCompilation.Create("HelloWorld")
.AddReferences(MetadataReference
.CreateFromFile(typeof(object)
.Assembly
.Location))
.AddSyntaxTrees(tree);
CompilationUnitSyntax root = tree.GetCompilationUnitRoot();
接下来,我得到每个类的所有字段
foreach (MemberDeclarationSyntax member in root.Members)
{
if (member is ClassDeclarationSyntax classDeclarationSyntax)
{
foreach (MemberDeclarationSyntax rootGameMember in classDeclarationSyntax.Members)
{
if (IsFieldSerializable(rootGameMember))
{
}
}
}
}
aaaaand 现在我被困住了。我想对这个字段做一些基于 Unity 3D 序列化规则的事情
- 查看类型是否公开
- 查看是否应用了属性[SerializeField]
- 查看类型是int、float、string、double等
- 查看类型,如果它的类具有[Serializable]属性
我想就是这样。目前,我正试图弄清楚该领域的类型,并迷失在一堆选项中,似乎没有一个能满足我的需求。
【问题讨论】:
标签: c# roslyn roslyn-code-analysis