C# 如何在fluent接口中实现可选分支

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)

我目前正在创建一个流畅的界面,但我不能100%确定实现可选分支的最佳方法是什么。举个小例子:

// 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)