Здравствуйте, Аноним, Вы писали:
А>Есть класс-обертка для веб-сервиса, в котором разные методы обращаются к разным методам веб-сервиса. Но этот код находится внутри совершенно одинаковых блоков try/catch, которые обрабатывают большой набор различных исключений. Можно ли как-то избежать копирования этих одинаковых блоков во все методы класса?
Было:
using System;
using System.Security;
class A
{
public void MakeA()
{
try
{
Console.WriteLine("A");
}
catch(SecurityException) {}
catch(ArgumentException) {}
}
public void MakeB()
{
try
{
Console.WriteLine("B");
}
catch(SecurityException) {}
catch(ArgumentException) {}
}
public void MakeC()
{
try
{
Console.WriteLine("C");
}
catch(SecurityException) {}
catch(ArgumentException) {}
}
public void MakeВ()
{
try
{
Console.WriteLine("В");
}
catch(SecurityException) {}
catch(ArgumentException) {}
}
}
Стало:
using System;
using System.Security;
class A
{
public void MakeA()
{
Try(() => Console.WriteLine("A"));
}
public void MakeB()
{
Try(() => Console.WriteLine("B"));
}
public void MakeC()
{
Try(() => Console.WriteLine("C"));
}
public void MakeD()
{
Try(() => Console.WriteLine("D"));
}
public void Try(Action action)
{
try
{
action();
}
catch(SecurityException) {}
catch(ArgumentException) {}
}
}