如何创建流畅的界面而不是更传统的方法?这是一种传统方法:
接口(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/