c# - 试图了解如何创建流畅的界面,以及何时使用它们

标签 c# .net fluent-interface

如何创建流畅的界面而不是更传统的方法?这是一种传统方法:

接口(interface):

interface IXmlDocumentFactory<T>
{
    XmlDocument CreateXml()                    //serializes just the data
    XmlDocument CreateXml(XmlSchema schema)    //serializes data and includes schema
}

interface IXmlSchemaFactory<T>
{
    XmlSchema CreateXmlSchema()                //generates schema dynamically from type
}

用法:

var xmlDocFactory = new XmlDocumentFactory<Foo>(foo);
var xmlDocument = xmlDocFactory.CreateXml();

//or...

var xmlDocFactory = new XmlDocumentFactory<Foo>(foo);
var xmlSchemaFactory = new XmlSchemaFactory<Foo>();
var xmlDocument = xmlDocFactory.CreateXml(xmlSchemaFactory.CreateXmlSchema());

我希望能够说:

var xmlDocument = new XmlDocumentFactory<Foo>(foo).CreateXml().IncludeSchema();
//or...
var xmlDocument = new XmlDocumentFacotry<Foo>(foo).CreateXml(); 

最后,这种情况是否适合流畅的界面?还是更传统的方法更有意义?

最佳答案

使接口(interface)流畅的关键是确保所有方法都返回接口(interface)本身的实例,或者一些其他也实现了可以继续处理的接口(interface)的对象。

因此,在您的情况下,您的每个 IXmlDocumentFactory 方法都必须返回一个 IXmlDocumentFactory,以便您可以继续调用。最后一个方法,如果有的话,返回你真正想要的类型?

它使代码非常易读,但仍然让我有点胆怯的一件事是返回检查。您必须非常确保不会返回 null,否则下一个“流畅的调用”将失败。

关于c# - 试图了解如何创建流畅的界面,以及何时使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138942/

相关文章:

c# - 如何在 Visual Studio 中(重新)启用实时 CSS 编辑?

c# - 出现错误 -2147220472(无法启动 Quickbooks)

c# - 如果服务器在路由器后面,如何获取用户的公共(public) IP?

c# - 具有可见光标的 WPF 的只读文本框 (.NET 3.5)

c# - UCanAccess、IKVM 和 C#

f# - 降低 API 流畅度的最佳方法?

java - 如何在 Java 中实现具有继承性的 Fluent Builder

c# - 如何加速无尽跑酷

c# - 是否可以像 WebView 一样在 Windows 窗体中嵌入 Gecko 或 Webkit?

c# - 断言该值等于预期值集合中的任何一个