2

MacroTargets.AssemblyNemerleの種類のマクロ属性内のアセンブリ内のすべてのタイプを取得する方法は?

4

2 に答える 2

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);
}
于 2011-08-25T14:30:55.600 に答える
1

ドン・レバの答えに加えて...

Node.EnsureCached() メソッドを使用して、メタデータが確実にキャッシュされるようにする必要があります。

于 2011-08-25T18:46:51.400 に答える