【发布时间】:2017-01-23 23:12:14
【问题描述】:
我正在向我的项目管理软件中添加一个业务仪表板模块。
仪表板将不常被一小部分用户使用——因此我想避免使用静态/共享类或每次执行都会消耗硬件资源。
我希望所有仪表板颜色都将从 instance 类中的字段初始化:DashBoardGUI,这将是 Disposed/最后收集的垃圾。
这样做的目的是让程序员能够轻松更改共享颜色,并让用户自定义首选颜色并将它们保存在数据库中。
类非常基础,没有构造函数,没有大型或资源密集型对象,只有 Color 类型的字段。
问题是有很多字段 (~35) 所以我在开发 GUI 时很难识别所有字段。
我的意思是,如果我想从DashBoardGUI 实例中调用一个字段
它非常confisung,看起来像这样:
Public Class CreateGUI
Inherits System.Windows.Forms.Panel
Private ColorKit As New DashBoardGUI
Protected Overridable Sub Init()
RightFlowLayOutPannel.BackColor = ColorKit.someConfusingFieldName1
LeftFlowLayOutPannel.BackColor = ColorKit.someConfusingFieldName2
RightClockGraph.BackColor = ColorKit.someConfusingFieldName3
LeftGroupBox.ForeColor = ColorKit.someConfusingFieldName4
End Sub
End Class
我的愿望是获得像使用命名空间“。”一样的效果。标志将减少选项并引导我到请求的字段:
Public Class CreateGUI
Inherits System.Windows.Forms.Panel
Private ColorKit As New DashBoardGUI
Protected Overridable Sub Init()
RightFlowLayOutPannel.BackColor = ColorKit.FlPannels.FieldName
LeftFlowLayOutPannel.BackColor = ColorKit.FlPannels.FieldName
RightClockGraph.BackColor = ColorKit.Clocks.FieldName
LeftGroupBox.ForeColor = ColorKit.GroupBoxes.FieldName
End Sub
End Class
我尝试创建 nested Structures 和 nested Classes inside DashBoardGUI 类,但如果它们被声明为静态/共享,编译器不允许我使用它们。如果我声明它们是共享的,那也是不可能的:
shared is not valid on a structure deceleration(我明白为什么)。
所以我的问题是:我怎样才能获得类似于使用具有多个共享类的命名空间的效果 - 调用字段如:xxx.yyy.myfield
当我使用实例类时?
也许有人有完全不同的方法,可以给我建议吗?
也许我节省资源的方法(在顶部解释)是错误的,我应该使用静态/共享类创建命名空间?
谢谢。
【问题讨论】:
-
你可以让 Flannels、Clocks、GroupBoxes 继承自 DashBoardGUI。并将其放入 ColorKit 命名空间。
-
这不是一个坏主意,但我已经继承了 System.Windows.Forms.Panel - 我会将它添加到问题中的示例中
-
嗯,你可以尝试做一个基于 Panel 的用户控件并添加你自己的 ColorKit 属性......我只是在大声思考
-
这是一个创意,但也许有更简单的解决方案(?)
-
没有办法做嵌套枚举......最好的“寻找”方式是嵌套类stackoverflow.com/a/5992839/439371我猜这很简单但无效