Я думаю, что вам лучше всего либо разбить ваш сервис на несколько похожих сервисов (юк), либо разбить ваш метод (методы) на перегрузки, предназначенные для использования разными абонентами.
т.е. если у вас есть Service1, который предоставляет метод foo () для CallerA и CallerB, возможно, попробуйте сделать foo частным и выставить fooA () и fooB (), которые вызываются исключительно CallerA и CallerB соответственно. Затем fooA () и fooB () могут установить свойства только для чтения перед вызовом foo ().