支持多个用户输入属性的应用程序架构

时间:2010-09-13 13:21:55

标签: c# winforms architecture

我一直在困惑如何最好地构建一个我即将开始工作的应用程序,并且没有什么简单的想法。也许别人可以看到我失踪的东西。

目标非常简单 - 在C#/ WinForms中构建应用程序以允许用户指定要加载的文件,然后以3D形式显示该文件的内容,允许用户调整某些属性,然后运行模拟

棘手的部分是后端。我有两个要加载的文件。

第一个未由用户指定,而是来自旧版C ++应用程序的 out ,并且是XML格式并将自动加载。 XML文件描述其对象结构 - 每个类,其属性以及这些属性的相应最小值,最大值和默认值,以及记录该属性的文本字段。该文件用于设置/定义类/属性。此文件会定期更改,因此此处的目标是导入这些XML定义,以免将此新UI与旧应用程序过于紧密地链接。

第二个文件包含与用户相关的输入。此文件描述了将使用的对象以及与第一个文件中描述的类/属性子集相关的值。

就是这样。

正如我所说,我已经考虑了几种方法,但它们看起来都很古老。我考虑过这个方法:首先,创建一个工厂/调度程序,读取并构造一个类型为“可加载”的类来表示XML中定义的那些类;然后创建一个通用的“Property”来存储属性本身,并将它们存储在Loadable对象中的某种集合中。我的想法就是这样,我可以在加载用户文件时或在PropertyGrid中将它们拉出来进行用户编辑时引用这些可加载项。

思考?我在破解吗?有没有更简单的方法解决这个问题,我没有透过树木看到?欢迎任何评论。

2 个答案:

答案 0 :(得分:1)

您的第一个文件是关于您实体的元数据。 (根据你的描述)你可以像这样建模(非常接近你所描述的):

public class Class {
  public List<Property> Properties;
}

public class Property {
  public string Name;
  public float Min;
  public float Max;
  public float Default;
  public string Documentation;
}

然后,您的第二个文件是与该元数据相关联的数据,您可以像这样建模:

public class Instance {
  public Class Class;
  public List<PropertyValue> Values;
}

public class PropertyValue {
  public Property Property;
  public float Value;
}

注意:根据需要,使用适当的构造(如只读属性和构造函数参数)来实例化对象。 (我以字段为例。)

答案 1 :(得分:0)

我不确定这是否是您正在寻找的,但每次我处理XML设置文件(这几乎是您的第一个文件沸腾)我只是创建一个其生活的唯一目的的类是检索这些值并将它们还给我。这样我就不必立即读取所有属性或设置,而只需调用这个类,它将检查XML所需的特定属性,然后立即将它提供给我,然后让GC执行它事情。就像我说的那样,我不确定这是不是你想要的,但我的想法是帮你解决一下。