2014-01-30 48 views
0

我目前正在創建一個流暢的接口,我不是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 

?有沒有其他(更好)的方法來做到這一點?

回答

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) 
+0

這種失去了流暢的辦法,不是嗎? –

+0

我相信它很流利 – ivowiblo

+0

流利的界面不是能夠大聲朗讀並創建完美的英語句子。這是關於給一個非常流暢的API。 – ivowiblo