Вы можете использовать метод перегрузки ...
GetFooBar()
GetFooBar(int a)
GetFooBar(int a, int b)
Это зависит от сигнатур метода, в приведенном мной примере пропущен метод «только b», поскольку он будет иметь такую же сигнатуру, что и метод «int a».
Вы можете использовать типы Nullable ...
GetFooBar(int? a, int? b)
Затем вы можете проверить, используя a.HasValue, чтобы увидеть, был ли установлен параметр.
Другим вариантом будет использование параметра 'params'.
GetFooBar(params object[] args)
Если вы хотите использовать именованные параметры, потребуется создать тип для их обработки, хотя я думаю, что для веб-приложений уже есть нечто подобное.