gpt4 book ai didi

C# 方法中的重复代码

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:08 25 4
gpt4 key购买 nike

我有一些方法。在每个方法代码中重复。例如这样的东西

    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 委托(delegate)的签名,因此您可以拥有尝试执行操作的方法,并将“不安全”方法传递给它。 IE。在使用 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);

关于C# 方法中的重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com