C# 在C中从数据库条目动态加载用户控件#
在C#,Windows窗体应用程序中,我们有一系列用户控件,这些控件与数据库中的菜单项记录关联C# 在C中从数据库条目动态加载用户控件#,c#,winforms,dynamic,user-controls,C#,Winforms,Dynamic,User Controls,在C#,Windows窗体应用程序中,我们有一系列用户控件,这些控件与数据库中的菜单项记录关联 ID Menu Title 1 User Management 4 Group Management 6 System Utilities 12 Configuration Management 一些用户控件 UserManagement.cs GroupManager.cs SysUtil.cs ConfigurationMan.cs 我
ID Menu Title
1 User Management
4 Group Management
6 System Utilities
12 Configuration Management
一些用户控件
- UserManagement.cs
- GroupManager.cs
- SysUtil.cs
- ConfigurationMan.cs
谢谢 您可以将类名存储在数据库中,并通过反射执行它们。它们需要全部实现一个接口或全部派生自基类(我假设您正在扩展控制),以便在不必以不同方式处理每个单独的类的情况下进行处理。在某些方面,切换(可能在枚举上,而不仅仅是在id上)是相当合理的。您可以将程序集限定名推送到DB中,但是DB关心程序集或类什么?重构时会发生什么?迁移到java?需要支持多个UI引擎吗?不,我可能只是切换自己-用工厂方法封装它
public static Control CreateControl(ControlType controlType) {
switch(controlType) {
case ControlType.Foo:
return new blah...
case ControlType.Bar:
...
}
throw new ArgumentOutOfRangeException();
}
您可以将类型名称存储在数据库中,并使用反射来更新您的用户控件。谢谢!我想可能是这样,但我想核实一下。