Время компиляции: как я могу проверить, используется ли тип данных (и / или значение) в методе

Во время компиляции, как я могу проверить, используется ли тип данных (и / или значение) в методе.

Я пытаюсь построить живую архитектуру, которая поддерживает плагины.

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

Я использую VS2015 Preview.

Какие-либо предложения?

2 ответа

Решение

Этот вид проверки можно реализовать с помощью PostSharp. Это не тривиально, но проще, чем использование Mono.Cecil. SyntaxTreeVisitor и ISyntaxReflectionService являются хорошей основой для реализации алгоритма анализа, который должен вызываться из Aspect.CompileTimeValidate.

Рослин должна быть упомянута также. Он позволяет "расширять" компилятор C# (или VisualBasic) с помощью специальной диагностики, и он очень хорошо интегрирован с VS2015.

Отказ от ответственности: я разработчик PostSharp.

Я не думаю, что вы можете заставить компилятор выдать эту ошибку за вас. Возможно, вы сможете ввести дополнительный шаг сборки, который запускает консольное приложение C#, которое проверяет (используя отражение) то, что вы хотите.

Другие вопросы по тегам