对不起,如果这个标题不是很明确,不知道如何描述我在找什么,这无助于做适当的研究。通过方法调用子对象轻松构建
所以,我目前devlopping一个DLL,稍后将用于更大的项目。
我想此DLL使用一个对象作为这样的输入:在此对象中的每个方法
SQuery _query = new SQuery()
.addText("text")
.addValue("2");
,我可以通过容易地做“这个返回”。
然后我想补充应该像这样工作的另一个功能:
//Creation of the main object
SQuery _query = new SQuery()
.addText("text")
.addValue("2");
//Creation of the subobject
SSub _sub = new SSub()
.addTest("test")
.addValue(3);
//Adding subobject to main object
_query.AddSub(_sub)
.addTitle("title");
现在我想知道是否有一种方法来代码,可以允许它更容易使用,我第一次做这样的:
SQuery _query = new SQuery()
.addText("text")
.addValue(2)
.addSub(new SSub().addTest("test").addValue(3))
.addTitle("title");
现在我想走得更远,我不知道是哪个语法应该是正确的,我没有找到任何但是我寻找一些可以使用,而无需用户实例化的这样的对象:
SQuery _query = new SQuery()
.addText("text")
.addValue(2)
.addSub()(this.addtest("test").addValue(3)) //or something like that
.addTitle("title");
我知道我可能是错的,它是不是一个好主意,以有东西容易,因为可以使用,我也许应该仅仅停留在前面的例子,这是比较容易的代码,仍然很容易使用。但无论如何,我想要别人的意见,以防有人知道解决方案。对我来说,这是不可能的,唯一的办法是做到这一点,但它感觉很糟糕是让我的子对象addTest()& addValue()returing自己的子对象实例,然后在子对象中有一个endSub()方法返回像这样的主要对象:
SQuery _query = new SQuery()
.addText("text")
.addValue(2)
.addSub()
.addTest("test")
.addValue(3)
.endSub()
.addTitle("title")
但是使用这个,你看不到的地方启动子对象,并在那里结束。
我并不是那些成功者调用方法的粉丝,我觉得很容易阅读代码,但有些人在以前的版本中使用我的DLL问我,他们可以更快地使用这些巨大的成功者调用,这就是为什么我试着做到这一点。
最后,对不起我的英文。
多少嵌套的层次,你想支持?是否有某些呼叫表明他们自己的“结束小组”? – CodeCaster
其实它可以是无限的...你可以有自己的子对象... 这是一个查询的构造,唯一的方法来知道什么时候end sub必须出现是当用户停止添加对它的调用。 只有当开发者认为他的查询结束后才能执行它。 –
这里的惯用解决方案是为所有这些操作使用属性,而不是方法。 – Servy