Как получить все типы в сборке внутри макрокоманды вида MacroTargets.Assembly
в Nemerle?Перечислить все типы в сборке внутри макроса
2
A
ответ
1
Дерево имен содержит все типы. Вы можете перемещаться и фильтровать его самостоятельно, или вы можете вызвать его метод 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);
}
1
В дополнении к ответу Дон Реба ...
Вы должны использовать метод Node.EnsureCached() для обеспечения кэшированных метаданных.
Не префикс своего заголовка тегами, он лишний, и для этого есть теги. –