在两个类之间共享功能

时间:2016-10-24 13:43:30

标签: c# polymorphism c#-6.0

这个问题听起来很常见,但我不知道应该如何实现它。

我的情景:

enter image description here

问题:如何实施DirectionTile

DirectionTile的行为实施:

abstract class DirectionTile
{
    public Point Direction;

    public Tile Next => Board.GetTile(Coords + Direction);
}

正如您所看到的,属性Coords将来自基类(?),即Tile

RailTileSailTile都是DirectionTiles。但是,我不能只从DirectionTile继承,因为SailTile需要从WaterTile继承,这与案例2的关系Tile(真的想要像这样使用多态)

我希望有人可以帮我解决这个问题,我无法解决。如果我的解释足够清楚,请告诉我。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,DirectionTile是由实体实现的行为。

仅使用接口IDirectionTile,为了防止多次实现,您可以提供扩展方法:

react

答案 1 :(得分:0)

这样做:
你的图表中的基础Tile将是你的基类/父类,所有其他类将是它的子类。然后它将继承Tile具有的属性和功能。
对于DirectionTile,我认为它是一个单独的实体/类,您将实例化WaterTile和RailTile

public abstract class Tile
{
    private Point direction;

    public Point Direction
    {
      get { return direction; }
      set { direction = value; }
    }

    public abstract string someFunction();
}

现在继承属性和函数:

public class WaterTile : Tile
{
  //all property and functions now are accessible from the Tile base class
  private string somevariable;
  public string Somevariable
   { 
   get{return somevariable;} 
   set{somevariable=value;}
   }
  public override string someFunction()
  {
       //return "something";
  }
}

public class SailTile : WaterTile
    { //if there are additional properties/functions in your WaterTile it will be accessible by this class (SailTile) but not to other class
       //in this case Somevariable is accessible in this class
    }