【发布时间】:2017-05-26 11:12:44
【问题描述】:
我有抽象基类。
public abstract class TurnBasedGameReferee
{
public ITurnBasedGamePlayer CurrentPlayer { get; private set; }
public TurnBasedGameField PlayingField { get; protected set; }
/*snipped*/
}
我有继承类:
public class TicTacToeReferee : TurnBasedGameReferee { /*snipped*/ }
在 TicTacToeReferee 中,我应该指的是这样的属性:
(ITicTacToePlayer)this.CurrentPlayer;
(TicTacToeGameField)this.PlayingField;
我认为,这里每次都使用显式转换是不正确的。
有没有办法在TicTacToeReferee 的上下文中这样做,这些CurrentPlayer 和PlayingField 是ITicTacToePlayer 和TicTacToeGameField 类型而无需每次都使用显式转换?
【问题讨论】:
-
取决于你想在演员阵容后对结果做什么。无论如何,转换到接口通常是一个好主意,不知道是什么让你认为它不是。展示这些类的代码,以及你在演员之后对它们做什么。
-
您可以在裁判上使用通用参数来指定球员和场地的类型。尽管我可能会建议您避免继承,除非您有特定的用例。
-
无论如何,如果您想访问派生类的成员,您有使用对该类的强制转换。
标签: c# oop inheritance types type-conversion