Здравствуйте, VladD2, Вы писали:
VD>Идея здравая, но делать для этого Aspect# не нужно. Это реализуется R#-ом уже сейчас. Нужно только сделать качественную реализацию соотвествующего правила.
Я в курсе. За проектом следил, правда пока в режиме read only

. Про Aspect# я упомянул просто для того, чтобы определить желаемую функциональность.
VD>В двух словах все выглядит так:
VD>R# реализован как некий компилятор-препроцессор. Он запускается перед окончательной комплиляцией, парсит проект (путь к которому получает в качестве параметра), ищет мета-правали, выполняет их (те в свою очередь меняют AST как хотят), генерирует по преобразованному AST код на чистом C#.
У меня в данный момент стоит Visual C# Express Betta 1. К нему можно прикрутить этот препроцессор? Или нужна полноценная студия + VSIP?
VD>Таким образом ничто не мешает сделать правило которое с помощью XPath-запроса найдет все конструкции помеченные неким атрибутом, найдет аспект и интеллектуально скопирует аспектный код в нужные места.
То есть ты предлагаешь атрибутами помечать те объекты, к которым нужно применить трансформацию? У меня была идея сделать наоборот. В определнии аспекта указывать, какие классы нужно выбрать, и какие члены этого класса нужно трансформировать. Я уже немного покопался в RSParser и RSharp.Query. Реализовал преобразование, которое привел в первом посте.
Прежде чем двигаться дальше, хотелось бы обсудить общую концепцию — как опрелять этот аспект, где какие атрибуты ставить. И с точки зрения юзабилити и с точки зрения скорости преобразования.
VD>Причем в принципе можно даже обходиться без пометок атрибутами. То что называется PointCut-ами и т.п. можно сделать XPath-запросами. Это намного гибче (хотя никто не мешает использовать и атрибуты).
Я примерно так и думал. Для простых случаев(когда аспект не размечен атрибутами) XPath можно генерировать автоматом.
Например в аспекте есть метод
public int MyMethod(int x,string y)
Для него можно сгенерит XPath типа такого (относительно класса):
.//RMemberMethodImpl[.//RParameter/Type[1]/@Name='int' and .//RParameter/Type[2]/@Name='string']
Насчет названий нод могу наврать. И еще надо добавить условие на тип возвращаемого значения.
VD>Сделать это можно уже сейчас. Нужно только изучить как писать мета-правила.
Ок. Посмотрю исходники, потом задам вопросы.
VD>Это намного сложнее чем АОП, так как подставляемая реализация автоматически генерируется по определенному алгоритму. Так что сделать АОП вообще не сложная задача. Вот только у меня и так много проблем. Нужно доделать самогенерацию кода R#, а у меня на работе полный завал. 
Вот и я так посмотрел и понял, что эта задача не очень сложная, но если это сделать, то получим реально полезный инструмент для большого количества разработчиков.
VD>Так что есль есть решимость, желание и смелость, то милости просим... Я со своей соторы постараюсь помчь советом и ответить на любые вопросы.
Желание есть, идеи тоже. Единственная проблема — время

Могу заниматься этим в вяло текущем режиме дома по выходным, когда никто меня не хочет видеть

... << RSDN@Home 1.1.4 beta 3 rev. 185>>