Возможно, это не самый правильный способ сделать это, но я только что опубликовал ответ на другой вопрос
Этот код может быть вам полезен
Создает прокси, который перехватывает все исключения, возникающие при вызове членов объекта, реализующего определенный интерфейс.Вы можете использовать это на каналах wpf.
IMyInterface myService = [...];
IMyInterface myExceptionLoggedService = ExceptionProxyGenerator.Generate<IMyInterface>(myService);
(myExceptionLoggedService as IExceptionProxy).Error+=(sender,method,exception)=>{
// do what you want on exception
};
// Use my service :
myExceptionLoggedService.MyOkFunction();// ok
myExceptionLoggedService.MyExceptionFunction();// calling the above delegate
Вы можете немного переписать этот класс, чтобы получить желаемый тип поведения (например, не выбрасывать исключение при ошибке и возвращать нулевую функцию -if, не возвращая void-)