Это довольно большой вопрос, поэтому я думаю, что отвечу на то, что я понимаю как его суть.Мне кажется, что вы ищете способ, основываясь на типе ответа, определить, какой тип элемента управления отображать.Есть две модели, которые я использовал с некоторым успехом в этом.Один из них включает в себя сохранение типа ответа, который я обычно могу сопоставить с типом .Net.Затем, основываясь на этом типе, определите, какой тип элемента управления отображать (например, строка -> TextBox, bool -> radiobutton, multiselect / array -> список флажков и т. Д.).Другое включает хранение метаданных (очень похоже на то, что вы описали выше).
В вашем случае я бы рассмотрел первое решение, поскольку оно, как правило, "проще" реализовать и требует меньшего количества предварительных знаний и программирования вокруг метаданных.Примером набора типов ответов может быть: Строка, Да / Нет, Номер, Список.Как видите, эти общие типы довольно легко отображаются на типы .Net.В случае «Список» вы можете добавить дополнительную таблицу для поиска (или AllowedValues).
Я надеюсь, что это то, что вы ищете.В противном случае, я мог бы предложить изучить похожие системы с открытым исходным кодом. Этот поиск может быть хорошим началом.