C#,向GUI宣布类设置 上下文
我在一个C#项目中工作,在那里我有几个电气仪器,比如电源和电压表 每个仪器都有多种选择,例如,我们有两种不同类型的电源。对于每次运行,我们只连接到每种类型中的一种 例如,在我考虑的设计中,我希望每种类型都有一个通用接口C#,向GUI宣布类设置 上下文,c#,design-patterns,C#,Design Patterns,我在一个C#项目中工作,在那里我有几个电气仪器,比如电源和电压表 每个仪器都有多种选择,例如,我们有两种不同类型的电源。对于每次运行,我们只连接到每种类型中的一种 例如,在我考虑的设计中,我希望每种类型都有一个通用接口 public interface PSU { public void connect(); public void disconnect(); ... } 接下来,在我的GUI中,我将注册将显示在菜单项下的所有可用PSU单元,在该菜单项中,每种类型只能选
public interface PSU
{
public void connect();
public void disconnect();
...
}
接下来,在我的GUI中,我将注册将显示在菜单项下的所有可用PSU单元,在该菜单项中,每种类型只能选择其中一个
下一步我想做的是让这些单元以GUI可以从这些设置中创建子菜单的方式宣布它们的设置。
我的目标是这样,如果我添加另一个PSU,我只需要注册它
问题
- 如何以可转换为菜单的方式提供设置
- 如何将菜单事件连接到这些动态创建的子菜单?这些事件实际上应该会更新仪器设置
- 这是一个有效且可维护的想法吗
谢谢你你可以通过反射检查哪些类实现了你的IPSU(我发誓,总是用大写字母I启动一个接口,它有助于维护) 也许是这样的
var type = typeof(IPSU);
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => type.IsAssignableFrom(p));
当然,您可能需要使用activator来创建所述类型的实例,然后将它们传递给一个菜单类,也许是一个控制器
您可以创建一个IConvertToMenu,它实现构建特定菜单所需的所有值
我会这样做的 您可以通过反射检查哪些类实现了您的IPSU(我发誓,总是用大写字母I启动一个接口,它有助于维护) 也许是这样的
var type = typeof(IPSU);
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => type.IsAssignableFrom(p));
当然,您可能需要使用activator来创建所述类型的实例,然后将它们传递给一个菜单类,也许是一个控制器
您可以创建一个IConvertToMenu,它实现构建特定菜单所需的所有值
我会这样做的 谢谢你的回答,你能给我举个简短的例子,或者给我指一个我能读到的地方吗?谢谢,我刚刚在谷歌上搜索了指南、反射和C#,这个链接似乎很有希望:请注意,如果您对类、实例和接口的基本掌握不到位,这可能有点难以理解。(我不知道你的技能水平)谢谢你的回答,你能给我举个简单的例子或者给我指一个我能读到的地方吗?谢谢,我刚刚在谷歌上搜索了指南、反射和C#,这个链接似乎很有希望:请注意,如果您对类、实例和接口的基本掌握不到位,这可能有点难以理解。(我不知道你的技能水平)正如下面的回答评论中已经提到的,学习类、接口和继承是非常宝贵的。这一知识本身就回答了这个问题的大部分。然后,您只需要反射就可以找到相关的类并为它们创建菜单项。要学习的东西很多,但一旦理解了代码,就很少有代码了。祝你好运,玩得开心:)谢谢。我将开始学习,正如下面的回答评论中所提到的,学习类、接口和继承是非常宝贵的。这一知识本身就回答了这个问题的大部分。然后,您只需要反射就可以找到相关的类并为它们创建菜单项。要学习的东西很多,但一旦理解了代码,就很少有代码了。祝你好运,玩得开心:)谢谢。那我就开始学习