gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:07:53 27 4
gpt4 key购买 nike

我一直在思考如何最好地构建我即将开始工作的应用程序,但没有想到什么简单的。也许其他人可以看到我所缺少的东西。

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

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

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

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

就是这样。

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

想法?我在破解吗?有没有更简单的方法来解决这个我没有透过树木看到的问题?欢迎提出任何意见。

最佳答案

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

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

注意:使用适当的构造,如只读属性和构造函数参数来适本地实例化您的对象。 (我使用字段作为示例。)

关于c# - 支持多个用户输入属性的应用程序架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3700771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com