【问题标题】:Using C# Interfaces to Expand existing Application使用 C# 接口扩展现有应用程序
【发布时间】:2016-07-19 05:49:58
【问题描述】:

我即将开始重新开发我的 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; }
}

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

public void HandleNomination(INomination nomination)
{
    nomination.Add();
}

我开始头疼的地方是如何区分需要用户为 HorseNomination 指定马匹的提名,还是不需要,比如 CarNomination?

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

【问题讨论】:

  • 您的BaseNomination 类中应该已经有一个NominationID。它应该可以用于所有提名类型。

标签: c# asp.net oop


【解决方案1】:

正如我从问题中了解到的那样,您被卡住了如何称呼不同的提名,即 HorseNomination、CarNomination 等。

public void HandleNomination(INomination nomination)
{
   nomination.Add();
}

你必须传入这个参数的是你想要执行一个动作的类的对象。

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

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

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

我希望我已经理解了你的问题并尝试了一点回答。

【讨论】:

  • 谢谢萨尔曼,太好了,能理解你的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
相关资源
最近更新 更多