Несколько вопросов по макросам
От: SergASh  
Дата: 24.08.07 14:17
Оценка:
Привет всем!

Стоит задача найти указанное пользователем через параметр макроса пространство имён. Пока делаю так
// это в коде макроса
private LocateWorkingNamespace( env : GlobalEnv, namespacePath : string ) : NamespaceTree.Node
{
  def root = env.NameTree.NamespaceTree.Path( namespacePath );
  root;
}

но при таком подходе можно получить и модуль. Вопрос как отличить пространство имён от модуля?

И ещё вопрос. Как передать параметр в макрос? Так что-то не работает
// это в коде макроса
[Nemerle.MacroUsage( Nemerle.MacroPhase.BeforeInheritance, Nemerle.MacroTargets.Class, Inherited = false )]
macro Wrapper( _typeBuilder : TypeBuilder, NamespacePath : string )
{
  // ...
}
// это в коде пользователя
[Wrapper( Namespace="TST.Tratata" )]
public class SampleEntity
{
  // ...
}


И ещё вопрос. Это самое пространство имён будет использоваться для того, чтобы туда писать вспомогательные классы. Оно одолжно быть одно на сборку (в идеале на проект, но это не очень важно). Можно ли как-то настроить это в одном месте, а не передавать каждый раз? Но при этом и не хардкодить в самом макросе.

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.