没有参数的聚合关系
问题描述:
我在C#中有一些聚合问题。现在,我有以下代码:没有参数的聚合关系
namespace ShapeDrawing
{
public abstract class Shape
{
protected Drawing myDrawing;
public Shape(Drawing drawing)
{
myDrawing = drawing;
}
}
public abstract class Drawing
{
public abstract void drawLine();
public abstract void drawCircle();
}
}
唯一的问题是,形状的子类,现在绘制的参数时,需要被实例化的类之一。唯一的问题是,绘图不能作为这些类的参数(由于程序的某些推理)。
是否有一种方法可以在不使用Drawing作为Shape子类的参数的情况下进行聚合?
[更新到第一个答案]
我这样做,但我得到了下面的问题。在我的Shape的子类之一,我有以下方法:
public override void draw()
{
myDrawing.drawCircle(x, y, size);
}
当此方法是拼命地跑,有一个与myDrawing问题。我得到的错误是:
“的NullReferenceException是未处理的类型的未处理的异常‘System.NullReferenceException’发生在ShapeDrawing.exe。”
我该如何解决这个问题?
问候, 净莲
答
是的,你做不使用绘图
public Shape()
{}
public Shape(Drawing drawing)
{
myDrawing = drawing;
}
的唯一原因,使一个构造一个抽象类的构造函数,就是让派生类有一个常见的构造函数逻辑(代码),所以如果你不想让派生类做这些,那么没有类会调用它,myDrawing永远不会被初始化。 –
现在我遇到了myDrawing等于null的问题,因为它在任何构造函数方法中都没有提及。另外,myDrawing永远不能初始化,因为Drawing是一个抽象类。 – jorenwouters