C#中的基类...可以像接口一样继承吗?

Sim*_*one 2 c# inheritance design-patterns interface composition

我需要为许多类实现基本行为.举个例子,假设它是一种绘图行为:可以绘制许多不同类型的对象,它们都需要一些属性和一些通用代码来实现绘图过程.假设我将这个常见部分放在一个名为Drawable的类中.

问题是这些不同的类可能正在扩展其他类,所以我不能让它们继承自Drawable.显而易见的解决方案是使用接口(IDrawable),但是我无法在其中实现任何代码; 我能想到的另一个解决方案是使用组合,通过创建一个我所有类都可以实例化的DrawAction类,但这需要我在我需要制作的所有类中放入相同的代码(如果只是几行)绘制.

有人可以给我一些关于如何做的建议吗?谢谢.

sll*_*sll 5

您可以创建DrawAction类的实例,然后使用构造函数依赖注入将其注入其他类,而不是通过每个类显式实例化它,这样可以减少耦合设计:

IDrawAction drawAction = new DrawAction();
var drawable = new Drawable(drawAction);

public class Drawable
{
    public Drawable(IDrawAction drawAction)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)