Я прошу прощения, если мое предстоящее объяснение не имеет достаточного смысла; Я известен за это, хотя я пытаюсь сделать иначе.
Я пишу сервис, который использует пользовательские плагины. Я пытаюсь изолировать их - не допуская их сборок вне домена приложения службы - используя интерфейсы, определенные в общей сборке.
Что меня убивает, так это использование абстрактных базовых классов. Существует функциональность, которая будет общей для всех реализаций некоторых интерфейсов, поэтому абстрактные базовые классы имеют смысл. Если абстрактная база находится в сборке службы, то независимо от того, какие плагины, которые подклассируют ее, их сборки перетаскиваются в домен приложения службы. Однако в абстрактной базе есть внутренние члены (свойства с внутренними установщиками и общедоступными получателями), которые использует служба, поэтому она должна быть в той же сборке, что и служба, чтобы это было возможно.
Кажется, что то, что я хочу, невозможно, но я также считаю, что это потому, что я придерживаюсь неправильного подхода. Я отчаянно пытаюсь лучше использовать хорошие образцы и практики в этом упражнении и учусь на этом пути.