我有以下代码段,我试图实现一个返回列表的方法。我的结构如下:抽象类“坐标” - >公共类“YCoordinate”与我的界面指向“YCoordinate”。我不希望我的接口直接与我的抽象类聊天,因为我觉得我的抽象类的实现负责工作。在C中使用抽象类,接口和列表#
接口:
interface IYCoordinate
{
System.Collections.Generic.List<Coordinates> GetYCoordinateList();
}
抽象类:
public abstract class Coordinates
{
private int coordinatePriority;
private int coordinate;
public Coordinates(int CoordinatePriority, int Coordinate)
{
this.CoordinatePriority = CoordinatePriority;
this.Coordinate = Coordinate;
}
public Coordinates() { }
public int CoordinatePriority { get { return coordinatePriority; } set { coordinatePriority = value; } }
public int Coordinate { get { return coordinate; } set { coordinate = value; } }
public virtual List<Coordinates> GetYCoordinateList()
{
throw new System.NotImplementedException();
}
}
接口和抽象类的实现(这是打破部分):
public class YCoordinate : Coordinates, IYCoordinate
{
public override List<Coordinates> GetYCoordinateList()
{
List<Coordinates> _list = new List<Coordinates>();
_list.Add(new IYCoordinate(1, 5000));
_list.Add(new IYCoordinate(2, 100000));
return _list;
}
}
不过,我想返回坐标列表并在“YCoord”中卡住公共覆盖功能inate“类,因为我无法直接实例化坐标类(因为它的摘要)。我怎样才能返回坐标列表?如果我如上所示放入IYCoordinate,则会发生同样的错误。
也许我的实现是完全错误的?任何建议如果做得更好,都会受到欢迎。
稍后会有XCoordinate类等。如果这种方法看起来有点像它,那是因为我试图理解背后的理论。
'IYCoordinate.GetYCoordinateList()'应该返回'的IList','没有列出'。 –
cdhowie
2013-04-29 19:22:45
@cdhowie编译器不需要将接口作为接口中定义的方法的返回结果返回。出于设计和体系结构的原因,您可能会选择这样做,但是,由OP编写的接口定义在这里不是问题。 IMO YCoordinate班有缺陷,因为它拥有自己的列表。这将会更好地归于另一个班级。 OP的例子有点令人困惑。 – CodeMonkeyKing 2013-04-29 20:35:09
@CodeMonkeyKing我从来没有说过,编译器会抱怨。我的意见旨在灌输良好的设计实践,而不是指出错误。 – cdhowie 2013-04-29 21:37:22