方法中重复的代码
本文关键字:代码 方法 | 更新日期: 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);