我正在尝试创建一个网球锦标赛应用程序。我正在寻找一种方法来容纳单打和双打的结果而不创建两个表。
我想知道是否可以完成以下内容?
public class Result
{
public int ResultId { get; set; }
public int TournamentId { get; set; }
public int Round { get; set; }
public DateTime? DatePlayed { get; set; }
public bool? Completed { get; set; }
}
public class ResultSingle : Result
{
public int Player1Id { get; set; }
public int Player1Score { get; set; }
public int Player2Id { get; set; }
public int Player2Score { get; set; }
}
public class ResultDouble : Result
{
public int Double1Id{ get; set; }
public int Double1Score { get; set; }
public int Double2Id { get; set; }
public int Double2Score { get; set; }
}
那么当我查询单曲结果时,它将查询播放器表格,当我查询双打结果时,它将寻找双重合作伙伴。
这是正确的还是会使抽象更有意义?
答案 0 :(得分:1)
这里的答案实际上取决于你自己实例化一个Result类的问题吗?如果没有那么抽象类可能是更好的选择。你所做的事情没有任何本质上的错误,但从一个角度来看,抽象类迫使你按照预期使用这个类,所以在这个意义上它更安全一些。
答案 1 :(得分:0)
我同意你的看法,试图将两个结果表合二为一,因为它经常用于查询和显示数据。 在我看来,你可以只定义一个结果类来存储游戏结果,但是添加一个名为“PlayerTeam”的类来定义付款人信息,尽管这必须是根据你的数据库结构。所以我的代码是这样的。
/// <summary>
/// game result
/// </summary>
public class Result
{
public int ResultId { get; set; }
public int TournamentId { get; set; }
public int Round { get; set; }
public DateTime? DatePlayed { get; set; }
public bool? Completed { get; set; }
public PlayerTeam Team1 { get; set; }
public int Team1Score { get; set; }
public PlayerTeam Team2 { get; set; }
public int Team2Score { get; set; }
//double flag
public bool IsDouble { get; set; }
}
/// <summary>
/// player team, in single game, there is only one player.
/// </summary>
public class PlayerTeam
{
public int TeamId { get; set; }
public int Player1Id { get; set; }
//if in single game, player2Id = 0 or -1, because there is only one player
public int Player2Id { get; set; }
}