我在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();
}
}
唯一的问题是,当其中一个类需要实例化时,Shape的子类现在将Drawing作为参数。唯一的问题是,绘图不能作为这些类的参数给出(由于程序的一些推理)。
有没有办法在不使用Drawing作为Shape的子类的参数的情况下进行聚合?
[更新至第一回答]
我做到了,但后来我遇到了以下问题。在我的一个Shape子类中,我有以下方法:
public override void draw()
{
myDrawing.drawCircle(x, y, size);
}
运行此方法时,myDrawing存在问题。我得到的错误是:
" NullReferenceException未处理。类型' System.NullReferenceException'的未处理异常发生在ShapeDrawing.exe"
我该如何解决这个问题?
此致 净莲
答案 0 :(得分:3)
是的,你创建了一个不使用Drawing
的构造函数public Shape()
{}
public Shape(Drawing drawing)
{
myDrawing = drawing;
}