Вам не нужно использовать object
, просто приведите его обратно.
Предположительно, вы тот, кто присвоил значение CmbUnitName.DataSource
, и вы должны знать тип этого объекта.В этом случае вы можете легко преобразовать его обратно в коллекцию / данные и выполнить цикл по нему.
Например, если он содержит список объектов класса Unit
:
//cast it back
var cmbUnits = (List<Unit>) CmbUnitName.DataSource;
//loop through collection
foreach(var unit in cmbUnits)
{
//access fields/properties
Console.WriteLine(unit.Id+" "+unit.UnitName);
}
Часть после приведения (циклический просмотр элементов и свойств) будет сильно зависеть от характера вашегоисточник данных.В любом случае, как только вы узнаете тип, вы сможете понять, как его пройти.
Если вы не знаете тип исходного объекта и по какой-то причине не можетенайдите его по коду, затем вы можете определить его, вызвав CmbUnitName.DataSource.GetType
.
Обратите внимание, что ComboBox.DataSource
не содержит произвольный объект.Значение свойства должно быть:
Объект, который реализует интерфейс IList или Массив.
Таким образом, в большинстве случаев вы сможете привести его обратно кIList
.Вы можете попробовать это, если хотите создать некую общую реализацию, которая будет работать для любого связанного с данными комбобокса.Но у меня есть сильное чувство, что в вашем случае вам просто нужно привести DataSource
к исходному типу.