2
如何获取程序集中的所有类型在Nemerle中的种类MacroTargets.Assembly
的宏属性中?枚举宏中的程序集中的所有类型
如何获取程序集中的所有类型在Nemerle中的种类MacroTargets.Assembly
的宏属性中?枚举宏中的程序集中的所有类型
名称树包含所有类型。您可以自己遍历和过滤它,也可以调用它的方法GetTypeBuilders
。
[ Nemerle.MacroUsage
(Nemerle.MacroPhase.WithTypedMembers
, Nemerle.MacroTargets.Assembly
)
]
macro ListTypes()
{
def PrintNameTree(node, depth)
{
repeat (depth)
Write(" ");
Write("|");
WriteLine(node.PartName);
unless (node.Children == null)
{
foreach (child in node.Children.Values)
PrintNameTree(child, depth + 1);
}
}
def env = ImplicitCTX().Env;
def names = env.NameTree;
PrintNameTree(names.NamespaceTree, 0);
}
除了唐雷巴的答案...
您应该使用Node.EnsureCached()方法来保证元数据缓存。
不要为标题添加标签前缀,它是多余的,这就是标签的用途。 –