流利接口的基本特征之一是,通常会声明为void的方法将返回可用的东西,通常是它们所属的类的实例(即this)。 StringBuilder体现了这一约定,虽然它本身并不十分流畅,但它确实为您提供了链接方法调用的便利:sb.Append("Foo") .Append("Bar") .AppendLine();但是,System.Web.Mvc.TagBuilder不遵循此约定;方法都是void。解决此问题的一种快速而又肮脏的方法是将一个私有TagBuilder(_instance)封装在一个FluentTagBuilder类中,然后实现所有相同的方法,但是将工作委托给实例并返回this而不是。做到这一点的最好的不是那么快又脏的方法是什么?继承显然不会做,因为方法只会因返回类型而异。我宁愿保持简单,并且尽可能不涉及模拟/替代框架。感谢您分享的智慧! 最佳答案 我刚刚创建了一个小的Git存储库,并启动了一个用于执行此操作的工具。它是非常业余的,编码错误,并且有很多问题,是的,但是您非常简单,可以对其进行调整。Fluentizer抓取一个类,并通过反射生成一个新类,封装了原始方法。在此处检查Fluentizer。关于c# - 生成非流利类的流利等效性的生产力工具?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14991429/
10-10 10:48