Это довольно взломанный и очень хрупкий, но может сработать.
Создание 2 сборок - одна для плагина, а вторая для других типов. Второй будет помещен в другой каталог известный и динамически загружен в первый при необходимости. (Например, через Assembly.LoadFrom .)
Первая сборка будет помещена в каталог подключаемого модуля и будет публиковать только ее типы. Это очень хрупко, потому что вам, вероятно, придется жестко прописать путь ко второй сборке, и вы рискуете удалить или переместить файл.
EDIT
Комментарий @SLaks убирает хрупкость этого решения. Если вы встраиваете вторую сборку как ресурс и загружаете ее во время выполнения, приложение, вызывающее Assembly.GetTypes
, не увидит типы, которые вы хотите скрыть.