2

我的程序中有以下数据和对象。

包含以下对象的 DynamicObjectContainer。

  1. MeasurementParameters : DataContainer(DataContainer 是基类)

这个对象有很多公共属性,我在运行时MeasurementParameters知道它们的名字。我还在基类中设置了内部连接,这样我就可以使用易于使用的接口访问类中包含的属性的值。DataContainerMeasurementParameters

例如:假设我有一个MeasurementParameters名为“pumpspeed”(类型字符串)的属性。我可以使用此函数访问该属性的值。

MeasurementParameters.GetStringValue("pumpspeed");

我通过在DataContainer对象构造期间使用反射在对象内部创建委托列表来实现这一点。(这是一次性的事情。)

到目前为止,一切都很好。

现在我被困在我想MeasurementParameters在 Windows 窗体中显示这些值的地方。

因为我只知道运行时的属性名称,所以我必须为用户提供一些方法来将属性名称(仅由他在脚本文件中定义)映射到表单中的固定标签。所以用户将映射数据以如下格式保存到表中。

Entry : "pumpspeed" "label22"

我想要一种快速有效的方法来从数据库中获取此映射,从MeasuremetParameters对象中获取所需的数据并将其显示在 windows 窗体中。

注意:如果这是一次性操作,我有很多解决方案。问题有两个方面。

  1. 有大量的属性MeasurementParameters(大约 200 处)
  2. MeasurementParameters对象包含不断更新其属性的函数。所以我的 windows 窗体必须调用这些函数来更新MeasurementParameters对象数据、获取数据并将其显示在正确的标签中。

此外,这应该以每秒 2 -3 次左右的周期发生。(理想情况下)

任何人都可以帮助我为此设计一个解决方案吗?一般的对象结构和关系建议也会对我有所帮助。

如果需要,我可以发布我正在使用的代码。

4

1 回答 1

0

在这里没有看到很大的问题

所以你有表 ObjectID、PropertyName、ControlName

在打开表单/选择对象时,查询它们 用标签的值构建Dictionary由 PropertyName 键入的键(通过查询中的控件名称查找MyForm.Controls.FindByName(Somename).添加OnPropertyChangedEvent到您的类中,在事件中抛出属性的名称args 然后在表单上添加一个处理程序

Mappings[e.PropertyName].Text = Object[e.PropertyName].GetStringValue;

可能不得不使用它来处理不是标签或表单上的面板的显示控件,但它应该只是击退。

于 2013-04-05T16:34:36.907 回答