没有参数的聚合关系

时间:2017-10-20 10:59:55

标签: c# aggregation

我在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"

我该如何解决这个问题?

此致 净莲

1 个答案:

答案 0 :(得分:3)

是的,你创建了一个不使用Drawing

的构造函数
public Shape()
        {}
 public Shape(Drawing drawing)
        {
            myDrawing = drawing;

        }