C# 接受动态动作方法参数

C# 接受动态动作方法参数,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我正在构建一个应用程序,在这个应用程序中,我有一个签出操作,可以处理几种不同型号中的任何一种型号的签出。它将根据传递给它的模型执行稍有不同的步骤,但差异不足以证明创建单独的操作是合理的 以下是我工作的一个简化概念: public class FooEstimate { public Guid Id; public DateTime BeginDate; } public class BarEstimate { public Guid Id; public Dat

我正在构建一个应用程序,在这个应用程序中,我有一个签出操作,可以处理几种不同型号中的任何一种型号的签出。它将根据传递给它的模型执行稍有不同的步骤,但差异不足以证明创建单独的操作是合理的

以下是我工作的一个简化概念:

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
}

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

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

public class Estimate 
{
    // whatever
}

public class FooEstimate : Estimate 
{
    // whatever
}

public ActionResult Checkout (Estimate estimate) 
{

}
或者,您可以只进行对象估计

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

if (obj is FooEstimate)
{

}
else if (obj is BarEstimate) 
{

}

我将为每个类型创建单独的操作,并创建一个助手类/方法来完成每个操作的大部分工作。我认为你的第二种方法是正确的,但不只是检查estimate是继承FooEstimate还是BarEstimate吗?