Имеем макроаттрибут для класса:
[MacroUsage(MacroPhase.BeforeInheritance, MacroTargets.Class)]
macro Test(tb : TypeBuilder)
{
...
Macros.DefineCTX(typer);
def baseType = <[ Base[$(tb.ParsedTypeName)] ]>;
...
}
И использование:
class Base[T] {}
[Test]
class MyTest {}
Это работает, т.к. создает код вида Base[MyTest].
В случае генериков тут надо передавать все типы-аргументы, как это сделать ?
Т.е. код должен быть примерно таким:
def baseType = <[ Base[$(tb.ParsedTypeName[..$(tb.GenericArgs))] ]>;
А еще лучше если бы уже было готовое свойство для полного имени класса включая типы-аргументы если это генерик и обычное если это обычный класс.