将对象实例模型实现到PropertyGrid

时间:2009-09-19 02:43:13

标签: c# design-patterns synchronization components propertygrid

我正在构建一个GUI应用程序,它将成为XML配置文件的前端。

XML结构定义了一组对象实例。也就是说,应该在使用应用程序(Windows服务)中实例化类型名称和属性值。

所以有三层:

ConfigurationObject <--> ComponentObjects <--> PropertyGrid

ConfigurationObject序列化为Windows服务的正确XML格式。 ComponentObjects与Windows服务使用的类型相同。

我遇到的问题是确定保持所有三个图层同步的最佳方法。

我的第一个实现我会在更改时更新各个属性。然而,当我需要将复杂对象更新到UI时,这种方法不能很好地工作(尽管我相信我知道现在的问题是什么)

我当前的方法涉及使用TypeConverters在ConfigurationObjectComponentObjects之间进行转换,这很有效,直到意识到我当前的逻辑忽略了BrowseableAttribute(因为我只是遍历所有转换为ComponentObject时的ConfigurationObject属性

所以在我花费更多时间在我目前的方法之前,我想确保我走在正确的轨道上。有更简单的方法吗?我是否可以在这种情况下使用一些模型/设计模式?

谢谢, 卡尔

1 个答案:

答案 0 :(得分:1)

我能够找出问题所缺失的部分。

我为TypeDescriptionProvider创建了ConfigurationObject此提供程序用于在ComponentObjects属性和ConfigurationObject对这些属性的表示形式之间进行映射。

ComponentObjects饰有TypeConverter s,转换为String的

真正的关键是将ConfigurationObject分配给PropertyGrid,而不是ComponentObjects