C# 无参数聚合关系
我对C#中的聚合有一些问题。现在,我有以下代码:C# 无参数聚合关系,c#,aggregation,C#,Aggregation,我对C#中的聚合有一些问题。现在,我有以下代码: namespace ShapeDrawing { public abstract class Shape { protected Drawing myDrawing; public Shape(Drawing drawing) { myDrawing = drawing; } } public abstract class
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作为参数。唯一的问题是,图形不能作为这些类的参数提供(由于程序的某些推理)
有没有一种方法可以在不使用绘图作为Shape子类的参数的情况下进行聚合
[更新至第一个答案]
我这样做了,但后来我遇到了以下问题。在Shape的一个子类中,我有以下方法:
public override void draw()
{
myDrawing.drawCircle(x, y, size);
}
运行此方法时,myDrawing存在问题。我得到的错误是:
“未处理NullReferenceException。ShapeDrawing.exe中发生了类型为'System.NullReferenceException'的未处理异常”
我该如何解决这个问题
问候,,
Joren是的,您创建的构造函数不使用绘图
public Shape()
{}
public Shape(Drawing drawing)
{
myDrawing = drawing;
}
为抽象类创建构造函数的唯一原因是让派生类有一个公共构造函数逻辑(代码),因此如果不想让派生类这样做,则没有类会调用它,
myDrawing
将永远不会初始化。现在我遇到了一个问题,myDrawing等于null,因为在任何构造函数方法中都没有提到它。此外,myDrawing永远无法初始化,因为Drawing是一个抽象类。