Здравствуйте, SuhanovSergey, Вы писали:
SS>Есть другие варианты?
Ага. Самый простой — assembly references.
Нет ручек — нет конфетки нет ссылки на сборку — нет "лишнего" кода.
Если не получается изолировать зависимости на уровне сборок — делитесь, как можно это сделать уровнем ниже
У меня красивых идей нет.
Для vs enterprise (вот не вспомню сходу, есть ли в младших редакциях) есть
layer validation с поддержкой
кастомной логики
SS>Цель данного вопроса — избежать требования к Функциям декларировать, какие части API нужны. Зачем нужно декларировать? Чтобы не инициалировать ненужные части API. Ленивая инициализация чрезвычайно сложна в реализации.
Ух ты, а вот это интересно. Если не секрет — где такие приседания требуются?
SS>Пока что единтственное решение, что я вижу — это декомпиляция и анализ функций-пользователей с помощью Mono.Cecil.
Вот тут будет в принципе нерешаемая проблема с false negatives,
class A
{
public event EventHandler SomeEvent;
public void Call() => SomeEvent?.Invoke(this, EventArgs.Empty);
}
Как зависимости определять будем?
UPD, P.S. Если стопроцентных гарантий не требуется, то можно подглядеть код в
.net refractor, боль менее то, что вам надо делает. Только учтите, что он кучу ошибок делает, придётся своими тестами проверять.