2011-08-25 4 views

ответ

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() для обеспечения кэшированных метаданных.

Смежные вопросы