我目前正在创建一个流畅的界面,我不是100%确定实现可选分支的最佳方式。一个小例子:
// Normal service registration
.AddService(myService)
// Service registration with additional parameters
.AddService(myOtherService).WithParameter(ServiceParam.Timeout, 100)
.AddService(myThirdService)
现在,我不确定AddService()和WithParameter()应该具有哪些返回类型。基本界面提供AddService
,必须返回支持WithParameter
和AddService
的内容。您是否建议使用以下结构(伪代码):
interface FluentStart
{
AddService
}
interface FluentServiceConfiguration
{
WithParameter
}
最后,AddService将返回一个接口:
interface FluentStartORFluentServiceConfiguration
: FluentStart
, FluentServiceConfiguration
?还有其他(更好)的方法吗?
答案 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)