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

标签 c# winforms architecture

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

目标非常简单——在 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/

相关文章:

go - 从 golang 中的 tcp 连接读取

c# - ASP.NET CORE (.NET Framework) 和本地化

c# - 匹配字符串后跟另一个词的正则表达式

unit-testing - junit:相互依赖的测试

c# - 如何使用 C# 为 Crystal 报表动态设置数据库名称?

c# - 是否有任何自动同步对象值的方法

php - 主干和 PHP 模型代码重复

c# - 使用 Filter.Where 使用 MongoDB C# 驱动程序时的性能

c# - Automapper:从自动映射对象解析源属性名称

c# - C# 确定谁最后修改了文件