Реализация модели объекта-экземпляра для PropertyGrid - PullRequest
0 голосов
/ 19 сентября 2009

Я создаю приложение с графическим интерфейсом, которое будет внешним интерфейсом для файла конфигурации XML.

Структура XML определяет набор экземпляров объекта. То есть имена типов и значения свойств, которые должны создаваться в приложении-потребителе (служба Windows).

Итак, есть три слоя:

ConfigurationObject <--> ComponentObjects <--> PropertyGrid

ConfigurationObject сериализуется в соответствующий формат XML для службы Windows. ComponentObjects - это те же типы, которые используются службой Windows.

Проблема, с которой я сталкиваюсь, заключается в определении наилучшего способа синхронизации всех трех слоев.

Моя первая реализация, я бы обновлял отдельные свойства, когда они были изменены. Однако этот подход не очень хорошо работал, когда мне нужно обновить сложные объекты в пользовательском интерфейсе (хотя я думаю, что я знаю, в чем проблема сейчас)

Мой текущий подход включает использование TypeConverters для преобразования между ConfigurationObject и ComponentObjects, который работает хорошо, пока не осознал, что моя текущая логика игнорирует BrowseableAttribute (поскольку я просто перебираю все свойства ComponentObject, когда преобразование в ConfigurationObject)

Поэтому, прежде чем я потрачу больше времени на свой текущий подход, я хочу быть уверенным, что я на правильном пути. Есть ли более простой подход? Есть ли какая-то модель / модель дизайна, которую я могу использовать в такой ситуации?

Спасибо, Karl

1 Ответ

1 голос
/ 20 сентября 2009

Мне удалось выяснить недостающие части моей проблемы.

I Создан TypeDescriptionProvider для ConfigurationObject, который этот поставщик использовал для сопоставления между ComponentObjects Свойствами и представлением ConfigurationObject тех же свойств.

ComponentObjects были украшены TypeConverter s, которые преобразованы в и из String's

Настоящим ключом было присвоение ConfigurationObject PropertyGrid, а не ComponentObjects.

...