2014-01-30 93 views
-1

我正在構建一個應用程序,我有一個「結帳」操作,該操作應該處理幾種不同模型中的任何一種的結賬。它會根據傳遞給它的模型執行稍微不同的步驟,但是不會有不同的差別(我不認爲)來證明創建單獨的操作是正確的。接受動態操作方法參數

這裏是我工作的一個簡單想法:

public class FooEstimate { 
    public Guid Id; 
    public DateTime BeginDate; 
} 

public class BarEstimate { 
    public Guid Id; 
    public DateTime BeginDate; 
    public string BarSpecificField; 
} 

public ActionResult Checkout (???) { 
    //process the estimate, etc 
} 

我怎麼能解決這個不必爲每個模型類型都有一個單獨結賬行動?

+0

我會爲每個類型和輔助類/方法單獨行動做大多數工作的每個動作。它很乾淨,很明顯,代碼重複可能是最小的。 –

回答

2

你可以使用一個基類的估計:

public class Estimate 
{ 
    // whatever 
} 

public class FooEstimate : Estimate 
{ 
    // whatever 
} 

public ActionResult Checkout (Estimate estimate) 
{ 

} 

或者你可以只是做結帳(對象估計)。

然後你可以檢查參數的類型,以便進行下一個步驟:

if (obj is FooEstimate) 
{ 

} 
else if (obj is BarEstimate) 
{ 

} 
+0

我認爲你的第二種方法是在正確的方向,但不'只是'檢查'估計'是繼承'FooEstimate'還是'BarEstimate'? –

相關問題