Основным параметром OperationContract моей службы является класс Preapproval.В классе Preapproval есть несколько общедоступных методов получения / установки для атрибутов DataMember.У меня есть код, который проверяет входные данные для установщиков, так что я бы выбрасывал ArgumentException, если, скажем, параметр пустой или выходит за пределы допустимых границ домена.
Если входные данные недействительны, я обычнобросил бы ArgumentException здесь.Так как это ситуация WCF, я должен бросить здесь предопределенное исключение FaultException, а не ArgumentException?Я понимаю, что в других местах я могу перехватывать общие исключения и перебрасывать их как FaultExceptions, но это действие будет происходить выше по стеку, в некоторых работах, выполняемых автоматически сантехникой WCF.
Например, когда вызывающая сторона вызывает мойВ этом случае сериализатор будет десериализовать свой SOAP, попытаться вызвать сеттеры для моего объекта и испытать выброс ArgumentException задолго до того, как моя операция будет фактически запущена.Таким образом, является ли хорошей практикой проектирования в классах DataContract просто выбрасывать FaultExceptions сразу?Я действительно не хочу связывать пользовательский обработчик с диспетчером каналов.
Я понимаю, что мог бы просто напрямую генерировать исключения FaultException, но я действительно хотел бы ограничить подобные вещи службой.Если этого нельзя избежать, я могу сделать это и во вспомогательных классах, но я бы предпочел написать как можно больше типичного кода, который не так тесно связан с System.ServiceModel и т. Д.
Спасибо!