2009-12-10 3 views
1

У меня есть требование, согласно которому пользователь может указать переменное количество пользовательских полей, например, в XML-файле. Эти поля имеют удобное для пользователя имя, которое отображается в графическом интерфейсе, и код, который используется для сохранения и получения значения поля в базе данных.Пользовательские настраиваемые поля WPF и WCF

Проблема заключается в том, что мне нужно, чтобы и моя служба WCF использовала список пользовательских полей, так что, когда я загружаю объект из своей базы данных, эти поля и их значения загружаются, но также мне нужен мой WPF-клиент для также знайте о полях, так что, когда пользователь создает объект нового типа, эти настраиваемые поля доступны как входы в форме, например, в поле со списком.

Ive попробовал несколько способов сделать это, и похоже, что встраивание настраиваемых значений в службу является лучшим способом, а затем получение клиентом для получения значений из службы при запуске. Но им интересно, есть ли «правильный» способ сделать такие вещи, поскольку это кажется довольно очевидным требованием для большинства корпоративных приложений.

Извините, если вопрос немного расплывчатый, но я попытался отвлечь его от тонкостей моей индивидуальной программы.

Благодаря Крис

ответ

1

Как бы вы это сделать, если WPF и WCF не были вовлечены? Как это работает, если бы это была только одна библиотека классов, вызывающая другую? Вы должны создать класс, чтобы инкапсулировать ваши пользовательские поля, а затем передать экземпляр этого класса в другой фрагмент кода.

Выполните то же самое здесь.

+0

Спасибо, Джон, ты прав, и это в значительной степени то, что я делаю, я просто подумал, может быть, что-то мне не хватало. Возможно, что-то вроде шаблона, которое люди используют для такого сценария. – cjroebuck

0

Ну, как для службы WCF - всегда можно было определить свойство что-то вроде:

[DataMember] 
List<OptionalProperty> optionalProperties { get; set; } 

, а затем определить тип «OptionalProperty» как контракт данных, тоже - вполне возможно, просто класс с Key и Value как строка или что-то еще - или что вам нужно.

[DataContract] 
class OptionalProperty 
{ 
    [DataMember] 
    string Key { get; set; } 

    [DataMember] 
    string Value { get; set; } 
} 

Поскольку это список чего-то, что вы можете иметь ноль, один, два, пять, fiveteen тысяч и т.д.

Могли бы, что работа по вашему сценарию ??

+0

Спасибо marc, его немного сложнее, так как существуют разные списки пользовательских полей для каждого типа объекта. Таким образом, я ввожу и распространяю словарь >. Но да, это очень похоже на то, что я делаю. Благодаря! – cjroebuck

+0

Вы должны, конечно же, подтвердить, что вместе с этим объектом возвращаются только определенные пользователем поля для конкретного типа объекта. Однако структура возвращаемых данных будет одинаковой во всех пользовательских полях: код, имя, значение для каждого поля. –

Смежные вопросы