Вопрос

Мне требуется возможность предварительной обработки нескольких файлов C# в качестве этапа предварительной сборки проекта, определения начала методов и вставки сгенерированного кода в начало метода перед любым существующим кодом.Однако у меня возникла проблема с обнаружением открытия метода.Сначала я попробовал сопоставить регулярное выражение, но в итоге получил слишком много ложных срабатываний.

Я бы использовал отражение, но класс MethodInfo не ссылается на точку в исходном источнике.

РЕДАКТИРОВАТЬ:Что я действительно пытаюсь сделать здесь, так это поддержать предварительные условия для методов, причем этот код предварительных условий определяется атрибутами метода.Моя первоначальная мысль заключалась в том, что я мог бы найти начало метода, а затем вставить сгенерированный код для обработки предварительных условий.

Есть лучший способ сделать это?При необходимости я готов создать надстройку Visual Studio.

Это проект .NET 2.0.

Ваше здоровье

Это было полезно?

Решение

PostSharp или Моно.Сесил позволю тебе сделать это чисто изменяя сгенерированный код, не прибегая к написанию парсера C#, который вряд ли станет для вас основным бизнесом...

Я не делал ничего важного с PostSharp, но предполагаю, что он более подходит, чем Mono, для реализации чего-то вроде предварительных условий или АОП.В качестве альтернативы вы можете сделать что-то AOPy с контейнером DI, например Нинжект

Но, конечно, применимость этой идеи зависит - вы не сказали ничего, кроме того, что хотите вставить код в начало методов...

РЕДАКТИРОВАТЬ:В свете вашего желания выполнить предварительные условия... Контракты кода в .net 4 определенно в этом направлении.

Что за инструмент у вас есть?Что плохого в том, что поставляется одна DLL Mono.Cecil.dll?В любом случае, инструментом для этой работы является нечто иное, чем синтаксический анализатор.

Другие советы

Я уверен, что есть более простой способ, но это может быть хорошим предлогом. МГраммер для вращения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top