Предварительная обработка C# — методы обнаружения
-
19-09-2019 - |
Вопрос
Мне требуется возможность предварительной обработки нескольких файлов C# в качестве этапа предварительной сборки проекта, определения начала методов и вставки сгенерированного кода в начало метода перед любым существующим кодом.Однако у меня возникла проблема с обнаружением открытия метода.Сначала я попробовал сопоставить регулярное выражение, но в итоге получил слишком много ложных срабатываний.
Я бы использовал отражение, но класс MethodInfo не ссылается на точку в исходном источнике.
РЕДАКТИРОВАТЬ:Что я действительно пытаюсь сделать здесь, так это поддержать предварительные условия для методов, причем этот код предварительных условий определяется атрибутами метода.Моя первоначальная мысль заключалась в том, что я мог бы найти начало метода, а затем вставить сгенерированный код для обработки предварительных условий.
Есть лучший способ сделать это?При необходимости я готов создать надстройку Visual Studio.
Это проект .NET 2.0.
Ваше здоровье
Решение
PostSharp или Моно.Сесил позволю тебе сделать это чисто изменяя сгенерированный код, не прибегая к написанию парсера C#, который вряд ли станет для вас основным бизнесом...
Я не делал ничего важного с PostSharp, но предполагаю, что он более подходит, чем Mono, для реализации чего-то вроде предварительных условий или АОП.В качестве альтернативы вы можете сделать что-то AOPy с контейнером DI, например Нинжект
Но, конечно, применимость этой идеи зависит - вы не сказали ничего, кроме того, что хотите вставить код в начало методов...
РЕДАКТИРОВАТЬ:В свете вашего желания выполнить предварительные условия... Контракты кода в .net 4 определенно в этом направлении.
Что за инструмент у вас есть?Что плохого в том, что поставляется одна DLL Mono.Cecil.dll?В любом случае, инструментом для этой работы является нечто иное, чем синтаксический анализатор.
Другие советы
Я уверен, что есть более простой способ, но это может быть хорошим предлогом. МГраммер для вращения.