没有参数的聚合关系

问题描述:

我在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。”

我该如何解决这个问题?

问候, 净莲

+0

的唯一原因,使一个构造一个抽象类的构造函数,就是让派生类有一个常见的构造函数逻辑(代码),所以如果你不想让派生类做这些,那么没有类会调用它,myDrawing永远不会被初始化。 –

+0

现在我遇到了myDrawing等于null的问题,因为它在任何构造函数方法中都没有提及。另外,myDrawing永远不能初始化,因为Drawing是一个抽象类。 – jorenwouters

是的,你做不使用绘图

public Shape() 
     {} 
public Shape(Drawing drawing) 
     { 
      myDrawing = drawing; 

     }