2014-01-30 75 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'? –

相关问题