没有构造对象时的方法链接

Method Chaining when no object was constructed

在我当前的 Net Framework 4 项目中,我这样做了:

看起来如下所示:

MyClassName obj = MyClassName.GetObject("Name").DoJob().Close();

哪里

问题是:是否可以按照我想要的方式设计它,而无需 try-catch 块?我想要很多很多一个衬垫而不是 try - lineOfCode - catch。每一行都是另一个对象执行其特定任务并销毁自身/被遗忘。我也不需要使用 MyClassName obj = 部分。

您可以 return 空对象作为 Null Object pattern 的一部分,而不是 returning null 值。

在这种情况下,当 DoJobClose 被调用时,这个对象什么都不做,只是 return 本身。

可能的问题可能是需要定义某种简单的 class 层次结构来实现此模式。当你现在只有一个 class 时,这似乎有点过分了。

zerkms 建议的第二个选项是使用某种 Option 类型而不是可空值。

因此,对 C# 使用 Option library。您的代码可能类似于:

// simplified skeleton
class MyClassName
{
    private MyClassName() {}

    public MyClassName GetObject(string name)
    {
        return new MyClassName();
    }

    public MyClassName DoJob() { return this; }
    public MyClassName Close() { return this; }
}

Option<MyClassName> obj = MyClassName.GetObject("Name").ToOption().Select(x=>x.DoJob()).Select(x=>x.Close());

if (obj.HasValue)
{
    // can work with obj.Value
}
else
{
    // somewhere was null
}

是的,我同意有些杂音,但这是语言的局限性。