接受动态操作方法参数

时间:2014-01-30 17:51:23

标签: c# asp.net .net asp.net-mvc

我正在构建一个应用程序,其中我有一个“结帐”操作,应该处理几种不同模型中的任何一种的结帐。它会执行稍微不同的步骤,具体取决于传递给它的模型,但不足以(我认为)不足以证明创建单独的操作是合理的。

以下是我正在使用的简化概念:

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
}

如何在不必为每种模型类型创建单独的结帐操作的情况下处理此问题?

1 个答案:

答案 0 :(得分:2)

您可以使用基类进行估算:

public class Estimate 
{
    // whatever
}

public class FooEstimate : Estimate 
{
    // whatever
}

public ActionResult Checkout (Estimate estimate) 
{

}

或者你可以做Checkout(对象估计)。

然后您可以检查参数的类型以执行后续步骤:

if (obj is FooEstimate)
{

}
else if (obj is BarEstimate) 
{

}