是否有一种优雅/方便的方式(没有创建许多"空"类或至少它们应该不烦人),以便在编译级别上保持顺序的流畅的插入.
流畅的界面:http: //en.wikipedia.org/wiki/Fluent_interface
想要允许这个编译
var fluentConfig = new ConfigurationFluent().SetColor("blue")
.SetHeight(1)
.SetLength(2)
.SetDepth(3);
Run Code Online (Sandbox Code Playgroud)
并拒绝这一点
var fluentConfig = new ConfigurationFluent().SetLength(2)
.SetColor("blue")
.SetHeight(1)
.SetDepth(3);
Run Code Online (Sandbox Code Playgroud)
链中的每个步骤都需要返回一个接口或类,该接口或类仅包含在当前步骤之后有效使用的方法.换句话说,如果必须首先使用SetColor,那么ConfigurationFluent应该只有SetColor方法.然后,SetColor将返回仅具有SetHeight方法的对象,依此类推.
实际上,返回值可以都是相同的实例,ConfigurationFluent但可以转换为由该类显式实现的不同接口.