这是一个很难表达的问题,这个。归根结底,这是由于我缺乏关于类架构的知识。我会给出用例。
我使用 PropertyGrid 和自定义 UITypeEditor 来编辑数据对象。在这些自定义 UITypeEditor 中,我有时需要知道未通过该类型的常用变量传递的变量的状态。例如:
Public Class ControlElement
<Editor(GetType(ControlSelectorDropDownEditor), GetType(UITypeEditor))>
<UniqueIdentifier("ControlElement.RigControl")>
Public Property RigControl As RigControl
End Class
Public Class ControlSelectorDropDownEditor
Inherits UITypeEditor
Public Overrides Function EditValue(ByVal context As ITypeDescriptorContext, ByVal provider As IServiceProvider, ByVal value As Object) As Object
' code here that constructs a drop-down list of RigControls
End Function
End Class
Context
并Provider
保持设置变量。我知道我可以通过 POCO 类属性上的 Attributes 传递一些常量值(根据 ControlElement 中的“UniqueIdenitifier”),但这对动态变量没有帮助。
因此,例如,我需要 UITypeEditor 知道什么时候需要发生。例如,如果我更新 RigControl 对象集,则会设置一个标志,告诉它需要在下拉列表中重建这些对象的列表。如果没有发生任何更改,则列表保持原样。
我宁愿不将其存储在 POCO 对象中(本例中为“ControlElement”)。
现在,我考虑的第一个解决方案是在 My.Settings 中设置一个变量,因为这些变量在每个类中都可以访问。但是,这感觉真的很杂乱,因为它真的应该保留给用户/应用程序设置,而不是操作变量?我将如何应用我自己的“可操作”版本的 My.Settings?也就是说,在类中定义了可以从项目中的任何类访问的变量。使用 Framework 3.5(不要问...),它是一个 WinForms 应用程序。