所以大部分项目在使用反射, 或者类反射的脚本中间层生成的过程中, 都会开发一些自动生成工具来减少重复性的工作, 笔者所经历的项目也是如此....本文将结合笔者的项目经验, 介绍如何在C#中用一种逐层处理的方式完成前文中提到的反射注册信息的自动生成的.
1....要使用这种方式, 我们先来简单的了解一下libclang.
2. libclang和它带来的改变
libclang是llvm工具链中的一部分, 整个llvm的工作过程简单来说可以看成下图所示:...P/Invoke方式来封装的一个libclang中的API, 对应的Api是clang_visitChildren, 在ClangSharp中, 我们最终是直接使用CXCursor.VisitChildren...借助clangsharp, 我们就能很好的在c#中实现对前面定义的annotate attribute的识别了, 这里我们以class对应的attribute识别为例:
if(cursor.kind