Предположим, у меня есть сборка .NET, которая использует отражение для загрузки сборок B и C (также .NET). Эти две сборки реализуют множество больших интерфейсов (то же самое для обоих). Когда метод вызывается в A, он пытается заставить B выполнить работу. Однако B ненадежен и может вызывать исключения. В настоящее время A имеет два режима: один, где он распространяет исключения для вызывающего абонента A и один, где он называет методы сопоставления более стабильным (но менее эффективным) C.Унифицированная обработка ошибок больших интерфейсов
Существуют ли более эффективные способы (меньше кода) для реализации этот сценарий, чем обертывание всех методов B, демонстрирует огромную реализацию всех интерфейсов B, только теперь окружающих каждый вызов кодом, как показано ниже? Компоненты B и C ничего не знают о выбранном методе обработки ошибок, поэтому они не могут реализовать логику.
public class BErrorWrapper : I1, I2, I3{
...
public int DoSomeWork(int num){
if (FailWithExceptions)
{
try
{
return B.DoSomeWork(num);
}
catch(MyLibException e)
{
return C.DoSomeWOrk(num);
}
}
else
{
return B.DoSomeWork(num);
}
}
...
}