Какой шаблон следует искать для вопросов / ответов, которые меняются? - PullRequest
0 голосов
/ 29 июня 2011

Я работаю в организации, которая предоставляет услуги дневной программы для лиц с нарушениями развития. В конце каждого дня работники заполняют ежедневник для человека или людей, с которыми они работали, чтобы записать, как прошел день. Эта информация вводится в электронную таблицу Excel, чтобы мы могли составлять периодические отчеты (т.е. ежеквартально). Я хотел бы переместить эти данные из Excel на веб-сайт, управляемый базой данных. Я использую (учусь на ходу) ASP.Net MVC, но мой вопрос носит более общий характер.

Каждый ежедневник настраивается для каждого обслуживаемого человека; Все программы уникальны (поэтому у каждого человека есть своя таблица). Кроме того, поля (или вопросы) на листах журналов могут меняться и изменяются со временем по мере изменения программы человека. В настоящее время я пытаюсь решить, как подходить к модели домен / объект, особенно обращаясь к типу словаря для пар вопрос / ответ, но типы данных для всех ответов не совпадают. Я думаю о том, возможно, использовать словарь (строка, объект) или словарь (строка, динамический) (если это возможно).

В любом случае, я начинаю узнавать о шаблонах и полагаю, что есть один или несколько шаблонов, которые могут быть лучшим путем; Я надеялся, что кто-то может указать мне на определенный шаблон (ы), который вы считаете подходящим.

Заранее спасибо ..

1 Ответ

1 голос
/ 29 июня 2011

Вопрос на самом деле не более, чем блок текста, который задает что-то, поэтому я бы не стал связывать это непосредственно с вашим ответом.Ответ может быть «типа T», поэтому я бы использовал обобщенные значения:

class Question
{
    String Text { get; set; }
}

class Answer<T>
{
    T _Answer;
    Question QuestionReference { get; set; }
    T Answer 
    {
        get { return _Answer; }
        set { if (value is T) _Answer = value; }
    }
}

Тогда ваша база данных будет содержать набор сущностей Вопросов, вы будете использовать некоторую бизнес-логику, чтобы решить, какие вопросы задатьдля каждого человека, а затем вы создадите новый Answer<T> для каждого вопроса, где T - тип ответа ответа.Вы также можете добавить проверку типов ответов и подкласс Question для таких вещей, как множественный выбор, когда вопрос должен знать, какие потенциальные ответы отображать.

Существует множество способов представленияэтот тип данных;В конце концов, выберите то, что вам наиболее удобно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...