Ich frage mich, ob es eine Möglichkeit gibt, eine Methode oder eine Klasse zu schreiben, die zu irgendeiner Methode einen Code hinzufügen würde, der zwischen vielen Methoden geteilt wird. Die Methoden geben unterschiedliche Dinge zurück und einige von ihnen sind einfach ungültig.Gibt es eine Möglichkeit, eine Methode zu verwenden, um andere zu umgehen, um Code-Duplizierung zu vermeiden?
Unten ist ein Teil des Codes, der in den Methoden dupliziert wird.
StartTimer(MethodBase.GetCurrentMethod().Name);
try
{
// Actual method body
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "DALPolicy");
if (rethrow)
{
throw;
}
}
finally
{
StopTimer(MethodBase.GetCurrentMethod().Name);
}
Jede Hilfe würde sehr geschätzt werden.
Nix Lösung oben auf den Code angewendet
public T WrapMethod<T>(Func<T> func)
{
StartTimer(func.Method.Name);
try
{
return func();
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "DALPolicy");
if (rethrow)
{
throw;
}
}
finally
{
StopTimer(func.Method.Name);
}
return default(T);
}
Yeh, dachte ich an AOP, aber das entmutigend manchmal zu beginnen, für einige zu verwenden. Einige Open-Source-Frameworks für AOP in C#: http://csharp-source.net/open-source/aspect-orientierte-frameworks – AaronLS