使用C#接口扩展现有应用程序

cla*_*iam 7 c# asp.net oop

我即将开始重新开发我的ASP.NET C#MVC商业项目,该项目负责提名澳大利亚的马事件.

我想将它扩展到其他类型的活动,例如赛车,足球,任何东西.目前,它对这项运动非常具体

我一直在研究接口和其他OOP方法,但将它应用到现实世界有点令人生畏.

这是我的基本计划:

public interface INomination
{
    public void AddNomination(); 
    public void UpdateNomination();
    public void DeleteNomination();
}

public BaseNomination
{
    // Define properties
}

public HorseNomination : BaseNomination, INomination
{
    // Horse nomination specific stuff, like specifying the horse
    public bigint HorseID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,在NominationService中,我可以调用它

public void HandleNomination(INomination nomination)
{
    nomination.Add();
}
Run Code Online (Sandbox Code Playgroud)

我的头开始受伤的地方是如何区分要求用户为HorseNomination指定马匹的提名,如CarNomination?

我需要IHorseNomination,ICarNomination吗?如果是这样,我如何处理它以呈现用户输入的View类型?

小智 1

正如我从问题中了解到的那样,您被困于如何调用不同的提名,即 HorseNomination、CarNomination 等。

public void HandleNomination(INomination nomination)
{
   nomination.Add();
}
Run Code Online (Sandbox Code Playgroud)

您必须传入此参数的是要执行操作的类的对象。

  // If you want to perform actions from HorseNomination 
    HandleNomination(new HorseNomination());

  // If you want to perform actions from CarNomination
    HandleNomination(new CarNomination());
Run Code Online (Sandbox Code Playgroud)

但请记住,为了传递对象,您必须继承该类的接口。

我希望我已经理解你的问题并尝试回答这个问题。