嵌套 if 条件的 C# 流畅模式

问题描述 投票:0回答:1

我正在研究 C#。我有以下一种情况-

var response1 = service.AddSchool(object model, string a);

if(response1.StatusCode == HttpStatusCode.OK)
{
    var response2 = service.AddTeacher(object model, int a, string b);
    
    if(response2.StatusCode == HttpStatusCode.OK)
    {
        var response3 = service.AddStudent(object model, int a, int b, string c);
        
        if(response3.StatusCode == HttpStatusCode.OK)
        {
            var response4 = service.AddSubject(object model, string a);
            {
                return true;
            }
        }
    }
}

我嵌套了 if 条件,如果我得到 HttpStatusCode“OK”,我将调用其他方法。但我想用 Fluent Pattern 改变这个嵌套的 if 条件。

有人可以建议我们如何做到这一点吗?我尝试了扩展方法。

c# extension-methods fluent method-chaining
1个回答
0
投票

我尝试了扩展方法。

你可以使用这样的扩展方法来做到这一点:

public class A {}

public static class Extensions {
    public static A ChainA(this A a, int condition, Func<A> func) {
        if (a == null) return null;
        if (condition == 42) return func();
        return null;
    }
}

然后使用:

var a = new A();

a
.ChainA(45,() => new A()) // will be null
.ChainA(42, () => new A()) // won't throw because it's an extension (static) method
// end result is null
© www.soinside.com 2019 - 2024. All rights reserved.