2010-09-13 58 views
3

我一直在困惑于如何最好地构建应用程序,因为我很快就会开始工作,而且没有什么简单的想法。也许别人可以看到我错过的东西。支持多用户输入属性的应用程序体系结构

目标很简单 - 在C#/ WinForms中构造一个应用程序,允许用户指定要加载的文件,然后在3D中可视化该文件的内容,允许用户调整某些属性,然后运行模拟。

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

第一个不是用户指定的,而是旧的C++应用程序,并且是XML格式,将自动加载。 XML文件描述了它的对象结构 - 每个类,它的属性,以及这些属性的相应最小值,最大值和默认值,以及记录属性的文本字段。该文件用于设置/定义类/属性。这个文件在相当经常的基础上继续发生变化,因此这里的目标是导入这些XML定义,以免将这个新UI与旧应用程序过于紧密地联系起来。

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

就是这样。

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

想法?我在破解?有没有更简单的方法来解决这个问题,我没有通过树看到?任何意见将受到欢迎。

+0

从这里很难判断出你是否在破解或者没有破解,但是我将不会去。 – Adkins 2010-09-13 14:24:52

+0

用户可选文件中有什么(如果有)限制 - 是预先确定的格式? – 2010-09-13 20:40:36

+0

格式确实是预先确定的,但这实际上只是一个加载/解析问题。 – Darren 2010-09-14 12:33:00

回答

0

我不确定这是否是您要查找的内容,但每次我处理XML设置文件时(这几乎是您的第一个文件正在向下滚动)我只创建一个类,其唯一目的是人生就是要重新获得这些价值,并将它们还给我。这样我就不必立即读取所有的属性或设置,只需简单地调用这个类来检查XML所需的特定属性,然后将它提供给我,然后让GC执行它事情。就像我说过的,我不确定那是不是你想要的,但是我的想法是帮助你一点。

+0

不幸的是,这有点深刻。我没有完全解释它,但是XML设置文件给我的那些属性是由XML文件本身定义的 - 我没有一个地方来存储它们(我正在尝试设计要完成的体系结构)。 – Darren 2010-09-14 12:34:36

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; 
} 

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