Zastanawiam się, czy istnieje sposób napisania metody lub klasy, która dodaje do dowolnej metody kod dzielony między wiele metod. Metody zwracają różne rzeczy, a niektóre z nich są po prostu nieważne.Czy istnieje sposób użycia jednej metody postępowania z innymi, aby uniknąć powielania kodu?
Poniżej znajduje się część kodu, który jest powielony w metodach.
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);
}
Każda pomoc zostanie bardzo doceniona.
Nix rozwiązanie zastosowano w kodzie powyżej
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, myślałem o AOP, ale że jest czasami trudne zacząć używać dla niektórych. Niektóre frameworki open source dla AOP w C#: http://csharp-source.net/open-source/aspect-oriented-frameworks – AaronLS