Ну хорошо, есть способ вытащить часть в отдельную сборку. Но это не особо че-то исправит, у меня весь проект в декларативном сишарпе, за исключением нескольких поганых методов
Зато я написал пакет, который позволяет сократить написание всяких конструкций на шарпике. Например, теперь не обязательно писать отдельную строку для создания локальных переменных. Не нужно писать 100500 вложенных ((())) для всяких кастов и вызовов функций. И можно делать такую дичь: https://github.com/WhiteBlackGoose/FunConsoleGame/blob/main/Sources/Program.cs#L105 (это из мною написанной консольной игры, которую сделал фана ради и как PoC)
А вот ты пишешь myObj.Method(), а потом вспомнил, что тебе нужно кастануть к ребенку. Возвращаешься и дописываешь кучу скобочек везде: ((DerivedType)myObj).Method(). А я пишу myObj.Downcast<DerivedType>().Method(). Удобненько