3 var namespaceName = classDeclaration.FindParent<NamespaceDeclarationSyntax>().Name.ToString();
4 var className = classDeclaration.Identifier.Text;
5 var properties = classDeclaration.DescendantNodes().OfType<PropertyDeclarationSyntax>().ToList();
6 var methodSyntaxs = classDeclaration.DescendantNodes().OfType<MethodDeclarationSyntax>().ToList();
7
8 //属性集合
9 var props = properties.Select(d => new PropertyMetaData(d.Identifier.Text, d.GetAttributeMetaData())).ToList();
10 //方法集合
11 var methods = methodSyntaxs.Select(GetMethodMetaData).ToList();
12 //实现的接口集合
13 var interfaces = classDeclaration.BaseList?.ToString().Split(':').Last().Trim().Split(',').Where(d => d.Split('.').Last().StartsWith("I")).ToList() ?? new List<string>();
14 //using 引用
15 var usingDirectiveSyntax = classDeclaration.Parent?.Parent == null ? new SyntaxList<UsingDirectiveSyntax>() : ((CompilationUnitSyntax)classDeclaration.Parent.Parent).Usings;
16 var usings = usingDirectiveSyntax.Select(d => d.ToString()).ToList();
17
18 //构造函数
19 var constructorDictionary = new List<KeyValueModel>();
20 foreach (var memberDeclarationSyntax in classDeclaration.Members)
21 {
22 if (memberDeclarationSyntax.Kind().ToString() == "ConstructorDeclaration")
23 {
24 //constructorDictionary = memberDeclarationSyntax.DescendantNodes().OfType<ParameterSyntax>().ToDictionary(d => d.GetFirstToken().Text, d => d.GetLastToken().Text);
25 constructorDictionary = memberDeclarationSyntax.DescendantNodes().OfType<ParameterSyntax>().Select(d => new KeyValueModel(d.Type?.ToString(), d.Identifier.Text)).ToList();
4 var properties = methodDeclarationSyntax.DescendantNodes().OfType<ParameterListSyntax>().FirstOrDefault()?.DescendantNodes().OfType<ParameterSyntax>().ToList() ?? new List<ParameterSyntax>();
5 foreach (var parameterSyntax in properties)
6 {
7 var type = parameterSyntax?.Type?.ToString();
8 var name = parameterSyntax?.Identifier.Text;
9 if (type != null && name != null)
10 param.Add(new KeyValueModel(type, name));
11 }
12
13 var returnValue = methodDeclarationSyntax.ReturnType.ToString();
14
15 return new MethodMetaData(methodDeclarationSyntax.Identifier.Text,