1
我在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。」
我該如何解決這個問題?
問候, 淨蓮
的唯一原因,使一個構造一個抽象類的構造函數,就是讓派生類有一個常見的構造函數邏輯(代碼),所以如果你不想讓派生類做這些,那麼沒有類會調用它,myDrawing永遠不會被初始化。 –
現在我遇到了myDrawing等於null的問題,因爲它在任何構造函數方法中都沒有提及。另外,myDrawing永遠不能初始化,因爲Drawing是一個抽象類。 – jorenwouters