Envolviendo llamadas al método en una clase con un estándar try / catch

Tengo una clase que tiene más de 200 métodos, cada uno de estos métodos realiza una llamada a la base de datos o un recurso de red.

Idealmente, me gustaría incluir cada llamada en un intento / captura, para detectar cualquiera de las excepciones comunes de red o SQL, y darle al usuario la oportunidad de intentar nuevamente (si corresponde). Sin embargo, agregar este código a cada llamada llevaría mucho tiempo e hinchado en lo que respecta al código.

He pensado en ajustar cada una de las llamadas a métodos en otro método, crear un delegado y envolver el código del delegado en el try / catch ... algo como esto ...

(Ignore la sintaxis ... es solo un ejemplo conceptual)

bool CallUpdatePassenger(int PassengerId,string PassengerName,string PhoneNumber)
{
    Delegate del= Delegate.CreateDelegate(typeof(UpdatePassengerDelegate), typeof(IPassengerServices).GetMethod("RemoteUpdatePassenger"));
    bool Res=(bool)CallDelegate(del,PassengerName,PhoneNumber);
}
object CallDelegate(Delegate del,params object[] args)
{
    object Result=null;
    try
    {
        Result=del.DynamicInvoke(args);
    }
    catch (Some.Timeout.Error.Or.Whatever te)
    {
        // take some action.. maybe retry etc.. 
    }
    return Result;
}

Tal vez hay una forma más práctica de hacer est

El código se genera automáticamente (mediante una herramienta que escribí). Puedo incluir fácilmente algo como lo anterior, pero quiero evitar escribir el código anterior para cada llamada a un método.

Además, si hago algo como lo anterior, puedo cronometrar métodos y registrar llamadas a métodos, etc. Parece un poco torpe (y no está tipeado).

Gracias Rich.

Respuestas a la pregunta(8)

Su respuesta a la pregunta