我正在构建一个GUI应用程序,它将成为XML配置文件的前端。
XML结构定义了一组对象实例。也就是说,应该在使用应用程序(Windows服务)中实例化类型名称和属性值。
所以有三层:
ConfigurationObject <--> ComponentObjects <--> PropertyGrid
ConfigurationObject
序列化为Windows服务的正确XML格式。 ComponentObjects
与Windows服务使用的类型相同。
我遇到的问题是确定保持所有三个图层同步的最佳方法。
我的第一个实现我会在更改时更新各个属性。然而,当我需要将复杂对象更新到UI时,这种方法不能很好地工作(尽管我相信我知道现在的问题是什么)
我当前的方法涉及使用TypeConverters在ConfigurationObject
和ComponentObjects
之间进行转换,这很有效,直到意识到我当前的逻辑忽略了BrowseableAttribute
(因为我只是遍历所有转换为ComponentObject
时的ConfigurationObject
属性
所以在我花费更多时间在我目前的方法之前,我想确保我走在正确的轨道上。有更简单的方法吗?我是否可以在这种情况下使用一些模型/设计模式?
谢谢, 卡尔
答案 0 :(得分:1)
我能够找出问题所缺失的部分。
我为TypeDescriptionProvider
创建了ConfigurationObject
此提供程序用于在ComponentObjects
属性和ConfigurationObject
对这些属性的表示形式之间进行映射。
ComponentObjects
饰有TypeConverter
s,转换为String的
真正的关键是将ConfigurationObject
分配给PropertyGrid,而不是ComponentObjects
。