C#,向GUI宣布类设置

时间:2018-02-23 10:26:27

标签: c# design-patterns

上下文

我正在开展一个C#项目,我有几个电子仪器,如电源和电压表。

每种仪器有多种选择,例如,我们有两种不同类型的电源。我们只为每次运行连接到每种类型中的一种。

在我想到的设计中,我想为每种类型设置一个通用接口,例如

public interface PSU
{
    public void connect();
    public void disconnect();
    ...
}

接下来,在我的GUI中,我将注册所有可用的PSU单元,这些单元将显示在菜单项下,在该菜单项中,每种类型只能选择其中一个。

接下来我要做的是让设备以GUI可以创建这些设置的子菜单的方式宣布他们的设置。 我的目标是让它像这样,如果我添加另一个PSU,我只需要注册它。

问题

  • 如何以可以转换为菜单的方式提供设置?
  • 如何将菜单事件连接到这些动态创建的子菜单?这些事件实际上应该更新仪器设置。
  • 这是否是一个有效且可维护的想法?

谢谢

1 个答案:

答案 0 :(得分:2)

你可以通过反思检查哪些类实现了你的IPSU(我发誓,Allways以一个有助于维护的资本开始一个界面。)

或许这样的事情?

var type = typeof(IPSU);
var types = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(s => s.GetTypes())
    .Where(p => type.IsAssignableFrom(p));

当然,您可能需要使用激活器来创建所述类型的实例,然后将它们传递给菜单类,可能是控制器?

你可以创建一个IConvertToMenu,它实现了构建特定菜单所需的所有值。

多数民众赞成我会怎么做。