У меня есть веб-страница, на которой пользователь может перетаскивать определенные виджеты в один заполнитель. Каждый виджет имеет свой собственный набор свойств.
Например, предположим, что у меня есть следующие виджеты HTML:
Widget1:
- Title field
- Technical name field
И еще один виджет, более динамичный:
Widget2:
- Range picker field 1 (0 to 100)
- Range picker field 2 (0 to 100)
------------------
| (+) Add picker |
------------------
(can add as many range pickers as needed)
Теперь одним нажатием кнопки эти настройки сохраняются в базе данных. Но в какой-то момент мне также нужно снова прочитать эти данные из него.
Например, предположим, что у меня есть следующие классы для виджетов:
interface IWidget { }
class Widget1 : IWidget
{
public string Title {get;set;}
public string TechnicalName {get;set;}
}
class Widget2 : IWidget
{
public List<int> PickerValues {get;set;}
}
Затем сохраните это в файле List
.
var widgets = new List<IWidget>();
widgets.Add(new Widget1());
widgets.Add(new Widget2());
Это сработает. Но тогда снова получить объект из этого списка проблематично:
var widget = widgets.First();
widget.????? // <-- NO INTELLISENSE!
Это означает, что он не знает, какая у него фактическая реализация. Я должен был бы бросить это. Но как, если я не знаю, какие виджеты там хранятся? Это может быть список из 1, 5 или даже 10 различных виджетов в любом порядке.
Как я могу решить эту проблему?