Позвольте мне проверить: у вас есть иерархия классов, унаследованная от A, предположительно структурированная в соответствии с вашей бизнес-областью. Затем вы хотите добавить поведение в зависимости от того, где выполняются классы. До сих пор вы использовали методы расширения, но теперь вы обнаружите, что не можете заставить их варьироваться в зависимости от вашей иерархии классов. Какие виды поведения вы применяете на сервере?
Если это такие вещи, как управление транзакциями и безопасность, политики, реализованные посредством внедрения зависимостей, как предложено Марком, должны работать хорошо. Вы также можете рассмотреть возможность реализации шаблона стратегии с помощью делегатов и лямбд для более ограниченной версии DI. Однако неясно, как клиентский код в настоящее время использует ваши классы и методы их расширения на сервере. Насколько другие классы зависят от того, как вы добавляете функциональность на стороне сервера? Являются ли они серверными классами, которые в настоящее время ожидают найти методы расширения?
В любом случае, похоже, что вам потребуется тщательная разработка и тестирование стратегии тестирования, так как вы вводите вариации в двух одновременных измерениях (иерархия наследования, среда выполнения). Вы пользуетесь юнит-тестированием? Убедитесь, что любое решение, которое вы выберете (например, DI через конфигурацию), хорошо взаимодействует с тестированием и макетом.