我只想问一个简单的问题。这是不好的编程习惯还是可以的?
现在我有这样的事情:
TestClass testClass = ClassSelectorTool.Selector.SelectedClasses.ElementAt(index)
如你所见。需要多次调用才能获得我想要的值。有没有更好的方法来解决这个问题?或者这样可以吗?
提前致谢。
答案 0 :(得分:3)
方法链接?但是只有一种方法。
当您必须使用长链属性覆盖对象图时,这是设计错误的有力指标,以便您可以找到所需内容。你需要对ClassSelectorTool
的内部运作有如此深入的了解,从而违反了封装。
为什么不在ClassSelectorTool
上创建一个隐藏此类复杂性的属性?
class ClassSelectorTool
{
//............
public IEnumerable<Foo> SelectedClasses
{
get
{
return Selector.SelectedClasses;
}
}
}
现在:
ClassSelectorTool.SelectedClasses.ElementAt(index);
现在,这个类的用户不需要知道获取所选类的实现细节(即它由选择器对象处理)。
减少噪音。
易于维护。
答案 1 :(得分:0)
只要您的链中的任何属性都不为空,我认为它就是好的,否则您将获得空引用异常。