У меня есть веб-страница, где пользователь может перетаскивать определенные виджеты в один заполнитель. Каждый виджет имеет свой собственный набор свойств.Как поместить различные объекты в список
Например, предположим, что у меня есть следующие 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 различных виджетов в любом порядке.
Как я могу решить эту проблему?
Так же, как примечание стороны: http://stackoverflow.com/questions/7552677/are-empty-interfaces-code-smell – Habib
Точка создания абстракции с интерфейсом, что * вы не должны забота * о конкретной реализации. В настоящее время ваш интерфейс не имеет смысла. Что вы хотите делать с этими виджетами? –
Что вы хотите сделать с IWidget, когда вы вытащите его из списка? –