Рассмотрим метод фабрики, приведенный ниже, который берет некоторые метаданные и создает столбец соответствующего типа.
Все хорошо, пока я не столкнусь со столбцом, который опирается на некоторые дополнительные данные (ColumnType.DropDownList).Для отображения нужны дополнительные данные (список значений).
Я не хочу предоставлять эти данные на уровне метаданных, поэтому предоставление их при создании объекта на фабрике представляется разумным.Но я борюсь за элегантный способ получить список в заводской метод (СМ. КОММЕНТАРИЙ: НЕ СМОЖЕТ БЫТЬ ЗДЕСЬ ЗДЕСЬ !!!)
Есть идеи?Я открыт для любого!
public static DetailEditorColumn<int> Create(ColumnMetaData metaData)
{
if (metaData.ColumnType == ColumnType.Rank)
{
return GridColumnBuilder<int>.GetRankColumn(metaData.DisplayOrder, metaData);
}
if (metaData.ColumnType == ColumnType.Decision)
{
return GridColumnBuilder<int>.GetDecisionColumn(metaData.DisplayOrder, metaData);
}
if (metaData.ColumnType == ColumnType.Date)
{
return GridColumnBuilder<int>.GetDateColumn(metaData.DisplayOrder, metaData);
}
if (metaData.ColumnType == ColumnType.DropDownList)
{
// TODO where the humf should this get plugged in!
// cant BE HARDCODED HERE!!!
DropDownList lookupList = new DropDownList()
{
new DropDownListOption() { Id = 1, Value = "Entry 1", ParenTId = null },
new DropDownListOption() { Id = 2, Value = "Entry 1", ParenTId = null },
new DropDownListOption() { Id = 3, Value = "Entry 1", ParenTId = null }
};
return GridColumnBuilder<int>.GetDropDownListColumn(metaData.DisplayOrder, metaData, lookupList);
}
throw new Exception("Column Type Not Supported " + metaData);
}