В наших внешних границах, которые предоставляют службы WCF, мы преобразуем все внутренние исключения в FaultException
. Это ручной процесс, который часто имеет небольшие недостатки, уникальные для каждой реализации. Он был скопирован/вставлен и бездумно изменен (или забыт) для каждого выставленного метода. Чтобы уменьшить количество ошибок, я хотел создать аспект, который перехватывал бы любое необработанное исключение.
Мы делаем сопоставление внутренних исключений с исключениями ошибок. Как я могу отправить функцию сопоставления аспекту?
Если я добавлю свойство к аспекту следующим образом:
[Serializable]
public sealed class FaultExceptionConverter : OnExceptionAspect {
public Func<Exception, FaultException> FaultConverter { get; set }
}
Я не могу (как и ожидалось из-за ограничений атрибутов) инициализировать его как [FaultExceptionConverter(FaultConverter = MyConversionMethod)]
(где MyConversionMethod
— это какой-то метод, назначаемый Func<Exception, FaultException>
). Есть ли шаблон для передачи этого типа параметра аспекту? Многие типы могут быть переданы в аспекты. Это общая проблема?
Если есть лучший способ сделать это, я был бы признателен за совет.