C# 为类提供不相交的功能

C# 为类提供不相交的功能,c#,C#,我目前正在编写一个图表应用程序。我正在使用Zedgraph显示二维绘图。在我的应用程序中,我需要显示大约8种不同类型的图表,每种图表都需要提供稍微不同的功能 这里的问题是,有时我有一些大多数类将使用的“基本”功能,有时我有一些类将使用的“添加”功能,而有时它是这些功能的混合体。除此之外,图表中显示的数据也是不相交的,视觉外观也是不相交的 考虑以下可能适用于一个或多个图表的功能: 图表能够自动滚动(使用实时数据) 图表在水平方向上缩放的能力 图表在垂直方向上缩放的能力 用户编辑图表中的点的能力

我目前正在编写一个图表应用程序。我正在使用Zedgraph显示二维绘图。在我的应用程序中,我需要显示大约8种不同类型的图表,每种图表都需要提供稍微不同的功能

这里的问题是,有时我有一些大多数类将使用的“基本”功能,有时我有一些类将使用的“添加”功能,而有时它是这些功能的混合体。除此之外,图表中显示的数据也是不相交的,视觉外观也是不相交的

考虑以下可能适用于一个或多个图表的功能:

  • 图表能够自动滚动(使用实时数据)
  • 图表在水平方向上缩放的能力
  • 图表在垂直方向上缩放的能力
  • 用户编辑图表中的点的能力
  • 用户选择数据区域的能力
  • 用户更改图表比例的能力
  • 图表“缩放以适应”的能力
  • 能够移动一个、两个、三个或四个垂直轴
  • 能够显示图表覆盖
综上所述,有些功能适用于所有图表,有些适用于图表的子集,有些适用于单个图表。目前我看不到要实现的功能层次结构

我当前的实现使用一个基类(提供我可以清楚看到的全局功能),然后我有两个“分叉”离开这个基类,但是我现在被困在如何在单个类上实现不相交的功能上。我不能使用抽象类,因为有时我需要从多个类继承,但我不想提供接口,因为代码完全相同


那么,我在这里做什么?我是否可以使用扩展方法来启用特定的功能?

考虑到功能的许多方面,它们看起来相当独立(任何特定的图表都可以有任何功能子集,或者接近它),在我看来,这些类型的东西可能会随着应用程序的发展而改变,您可能希望花一些前期时间来概括这些东西,而不是在每个图表的基础上实现它们


我只需要制作一个通用的“图表”用户控件并实现所有功能。然后,为每个功能赋予一个布尔属性以启用/禁用它。(即,
IsHorizontalScrollable
IsVerticalScrollable
IsSelectionEnabled
ArePointsEditable
)然后表单的每个实际实例只需要设置更通用表单的适当属性以及它的实际数据。

+1谢谢,这是一个不错的建议。是的,扩展方法在这里可能不是正确的用法。。。因为有些事情是相互排斥的,我也可以在属性设置器中处理它。@Simon是的,一般的观点是,你应该从一个单独的类开始做所有事情,然后让其他类使用它,只公开它所能做的有限子集。有时这是不可取的,最好从共享子集开始并添加到其中,但在这里,由于有如此多的选项排列,许多不同的实例将添加不同的功能重叠,这太难了。