gpt4 book ai didi

c# - DRY 修复可能性,C#

转载 作者:太空狗 更新时间:2023-10-30 00:04:41 26 4
gpt4 key购买 nike

这段代码困扰了我一整天,部分原因是

if (result != OpResult.Success) { // return

代码无处不在。

执行了一系列 (1..n) 评估。每次评估后,都会进行检查以确保操作成功(利用从枚举派生的自定义返回值):OpResult.Success

这是一个示例(带有示例对象等):

OpResult result = OpResult.Sucess;

result = performOperationOne(commonObjectArgument);

if (result != OpResult.Success)
{
trace.Exit(); // Exit logging mechanism
return result;
}

result = performOperationTwo(commonObjectArgument);

if (result != OpResult.Success)
{
trace.Exit();
return result;
}

如您所见,if (result != OpResult.Success) 用作流控制,即除非前面的所有操作都成功,否则下一个不会运行。

在 .Net 4.* 中,C# 在语法上已经具备了一些非常不可思议的能力。我可以做些什么来消除在每次操作后重新编写此评估的需要吗?

最佳答案

一种可能性是构建一个操作列表并在循环中执行它们:

var operations = new List<Func<CommonObjectArgumentType, OpResult>>
{
Operation1,
Operation2
};

OpResult result = OpResult.Success;
foreach (var op in operations)
{
result = op(commonObjectArgument);
if (result != OpResult.Success)
{
trace.exit();
return result;
}
}

// all operations were successful

关于c# - DRY 修复可能性,C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140784/

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