如何在流畅的接口中实现可选分支

时间:2014-01-30 21:39:45

标签: c# fluent-interface

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

// Normal service registration
.AddService(myService)
// Service registration with additional parameters
.AddService(myOtherService).WithParameter(ServiceParam.Timeout, 100)
.AddService(myThirdService)

现在,我不确定AddService()和WithParameter()应该具有哪些返回类型。基本界面提供AddService,必须返回支持WithParameterAddService的内容。您是否建议使用以下结构(伪代码):

interface FluentStart
{
    AddService
}

interface FluentServiceConfiguration
{
    WithParameter
}

最后,AddService将返回一个接口:

interface FluentStartORFluentServiceConfiguration
    : FluentStart
    , FluentServiceConfiguration

?还有其他(更好)的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用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)