Прежде всего, IoC.Resolve<IMyBLService>()
на самом деле очень плохое использование контейнера IoC, вы должны внедрить свои зависимости, а не разрешить их. Я знаю, что дело не в этом, но стоит упомянуть.
Что касается Исключения или результата метода, это зависит. Стандартный способ справиться с этим - с помощью исключений, однако существуют сценарии, в которых вместо этого более чисто и менее громоздко возвращать результат. Например, я очень часто использую результаты операций, потому что у меня есть очень специфические требования для исключения исключений, не связанных с доменом, из моего уровня SOA, поэтому мне нужно было бы перехватить исключение, связанное с доменом, просто чтобы создать новое. Это было не логично, не читабельно, это сказывалось на производительности, поэтому мы переключились на результаты с небольшим количеством инфраструктурного сахара.
Еще одна вещь, о которой стоит упомянуть, это то, что исключения, как правило, являются PITA, когда вам нужно запустить и вернуть результаты всей вашей проверки, не затормаживая первое недействительное правило.