Как лучше выделять встроенный мета-код. Есть две проблемы. Мета-код может быть встроен в код мета-шаблонов (код используемый как основа для изменения работчего кода). И в мета-коде могут быть участки которые должны после некоторой модификации перенаситься в конечный код. Нужно как то выделять все это. Причем это выделение должно быть в рамках синтаксиса Шарпа, чтобы студия не ругалась на непонятный ей синтаксис.
Пока что на ум приходят следующие варианты:
1. Выделение некими конструкциями языка. Например, псевдо-методами:
BeginMetaCode();
// Этот код производит модификацию кода метода в который
// он встроен.
foreach (RMemberPropertyImpl prop in meta.Propertys)
{
if (prop.Type.IsInheritedFrom("ICollection"))
{
BeginMetaEmit();
// Это шаблон который переносится в конечный код.
// Методы начинающиеся с префикса "Meta" являются
// мета-методами. Они заменяются на некоторые языковые
// конструкции. Так MetaMakeRef заменяется ссылкой
// на свойство, описание которого передается в метод.
nodeCount += MetaMakeRef(prop).Count;
EndMetaEmit();
}
}
EndMetaCode();
2. Выделение атрибутами спрятанными в коментарии:
/*[MetaCode]*/
foreach (RMemberPropertyImpl prop in meta.Propertys)
{
if (prop.Type.IsInheritedFrom("ICollection"))
{
/*[MetaEmit]*/
{
nodeCount += MetaMakeRef(prop).Count;
}
}
}
т.е. мета-атрибут распространяется на следующую инструкцию, в том числе на блок.
Какой синтаксис лучше? И чем? Если у кого есть свои варианты, то милости просим.
... << RSDN@Home 1.1.3 beta 2 >>
29.04.04 18:21: Перенесено модератором из 'RSDN Research' — VD