Для понимания приведу не уместный пример
Имеется медиа плеер, но для просмотра видео необходимо скачать dll в которую запихнули многогиговый фильм.
Хочешь фильм - качай обновления.
Практически это не запрещено ни спецификацией языка, ни компилятором.
Логически - полная чушь.
Вспомните для чего придумывалась dll. Внутри находится некий, в основном часто повторяющийся, функционал. Также чтобы разные программы не таскали с собой одинаковый функционал.
Если при проектировании схемы возникает необходимость в каком-то "извращенном" функционале, значит изначально не правильно продумана логика поведения, функционирования, взаимодействия вашей программы.
В таком случае рекомендуется почитать о паттернах проектирования. Вкратце паттерн это некий шаблон, набор правил для реализации распространенных задач.
Приятного схемостроения
