方法/财产链接是一种好的做法吗?

时间:2015-03-29 01:38:51

标签: c# methods method-chaining

我只想问一个简单的问题。这是不好的编程习惯还是可以的?

现在我有这样的事情:

TestClass testClass = ClassSelectorTool.Selector.SelectedClasses.ElementAt(index)

如你所见。需要多次调用才能获得我想要的值。有没有更好的方法来解决这个问题?或者这样可以吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

方法链接?但是只有一种方法。

当您必须使用长链属性覆盖对象图时,这是设计错误的有力指标,以便您可以找到所需内容。你需要对ClassSelectorTool的内部运作有如此深入的了解,从而违反了封装。

为什么不在ClassSelectorTool上创建一个隐藏此类复杂性的属性?

class ClassSelectorTool
{
    //............
    public IEnumerable<Foo> SelectedClasses
    {
        get
        {
            return Selector.SelectedClasses;
        }
    }
}

现在:

ClassSelectorTool.SelectedClasses.ElementAt(index);

现在,这个类的用户不需要知道获取所选类的实现细节(即它由选择器对象处理)。

减少噪音。

易于维护。

答案 1 :(得分:0)

只要您的链中的任何属性都不为空,我认为它就是好的,否则您将获得空引用异常。