C# 如何在fluent接口中实现可选分支
我目前正在创建一个流畅的界面,但我不能100%确定实现可选分支的最佳方法是什么。举个小例子:C# 如何在fluent接口中实现可选分支,c#,fluent-interface,C#,Fluent Interface,我目前正在创建一个流畅的界面,但我不能100%确定实现可选分支的最佳方法是什么。举个小例子: // Normal service registration .AddService(myService) // Service registration with additional parameters .AddService(myOtherService).WithParameter(ServiceParam.Timeout, 100) .AddService(myThirdService)
// Normal service registration
.AddService(myService)
// Service registration with additional parameters
.AddService(myOtherService).WithParameter(ServiceParam.Timeout, 100)
.AddService(myThirdService)
现在,我不确定AddService()和WithParameter()应该有哪些返回类型。基本接口提供了AddService
,它必须返回一些支持的参数和AddService
。您是否建议采用以下结构(伪代码):
最后,AddService将返回一个接口:
interface FluentStartORFluentServiceConfiguration
: FluentStart
, FluentServiceConfiguration
??还有其他(更好的)方法吗?您可以使用lambda表达式:
interface FluentStart
{
AddService( service );
AddService( service, Action<FluentServiceConfiguration> config );
}
// Normal service registration
.AddService(myService)
// Service registration with additional parameters
.AddService(myOtherService, x => x.WithParameter(ServiceParam.Timeout, 100))
.AddService(myThirdService)
接口FluentStart
{
AddService(service);
AddService(服务,动作配置);
}
//正常服务注册
.AddService(myService)
//带有附加参数的服务注册
.AddService(myOtherService,x=>x.WithParameter(ServiceParam.Timeout,100))
.AddService(myThirdService)
这种方式失去了流畅的方式,不是吗?我相信它相当流畅流畅。流畅的界面不是能够大声朗读并创造完美的英语句子。这是关于给出一个真正流畅的API。
interface FluentStart
{
AddService( service );
AddService( service, Action<FluentServiceConfiguration> config );
}
// Normal service registration
.AddService(myService)
// Service registration with additional parameters
.AddService(myOtherService, x => x.WithParameter(ServiceParam.Timeout, 100))
.AddService(myThirdService)