方法中重复的代码

本文关键字:代码 方法 | 更新日期: 2023-09-27 18:18:36

我有一些方法。在每个方法中,代码都是重复的。例如像这样的

    class Sample1
    {
        public void SampleMethod1()
        {
            try
            {
                //Code of Method
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public void SampleMethod2()
        {
            try
            {
                //Code of Method
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
    public void SampleMethod3()
    {
        try
        {
            //Code of Method
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

我能做点什么让自己不再重复吗?最近我读了一些关于AOP的文章。也许,这就是我问题的答案?

方法中重复的代码

你可以创建一个接受Action并尝试执行它的方法:

class Sample1
{
    public void SampleMethod1()
    {
       TryExecute(() => /* code for method */);             
    }
    public void SampleMethod2()
    {
       TryExecute(() => /* code for method */);             
    }
    private void TryExecute(Action action)
    {
        try
        {
            action();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

顺便说一句,你的示例方法满足Action委托的签名,所以你可以有一个尝试执行Action的方法,并传递"不安全"的方法给它。例如,在使用Sample1类的类中定义以下方法:

private void TryExecute(Action action)
{
    try
    {
        action();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

示例方法不应该有try-catch逻辑:

public void SampleMethod1()
{
    // code for method
}
public void SampleMethod2()
{
    // code for method
}

和用法:

var obj = new Sample1();
TryExecute(obj.SampleMethod1);
TryExecute(obj.SampleMethod2);