Я вызываю веб-сервис, который возвращает массив из одного из четырех пользовательских классов. Все классы имеют одинаковое внутреннее содержимое - одну строку с именем Описание и другую строку с именем Value. Я пытаюсь написать один метод, который может принять любой из четырех классов, и поместить его содержимое в источник данных выпадающего списка.Преобразование из одного класса в другой
Есть ли способ конвертировать из неизвестного составного класса в указанный класс с тем же содержимым? Или вырезать содержимое?
Или мне нужно написать четыре идентичные функции с различными типами данных?
редактировать: добавлен код
myDropDown.DataSource = CreateDataSource(myWebServiceResponse.Items);
myDropDown.DataTextField = "DescriptionField";
myDropDown.DataValueField = "ValueField";
// Bind the data to the control.
myDropDown.DataBind();
...
public ICollection CreateDataSource(MasterData[] colData)
{
// Create a table to store data for the DropDownList control.
DataTable dt = new DataTable();
// Define the columns of the table.
dt.Columns.Add(new DataColumn("DescriptionField", typeof(String)));
dt.Columns.Add(new DataColumn("ValueField", typeof(String)));
// Populate the table
foreach (sapMasterData objItem in colData)
{
dt.Rows.Add(CreateRow(objItem, dt));
}
// Create a DataView from the DataTable to act as the data source
// for the DropDownList control.
DataView dv = new DataView(dt);
return dv;
}
DataRow CreateRow(MasterData objDataItem, DataTable dt)
{
// Create a DataRow using the DataTable defined in the
// CreateDataSource method.
DataRow dr = dt.NewRow();
dr[0] = objDataItem.Description;
dr[1] = objDataItem.Value;
return dr;
}
public class MasterData
{
public string Value;
public string Description;
}
Это будет полезно, если вы предоставляете некоторый код s. –
Вы можете использовать 'dynamic'. –
Вы можете поместить интерфейс во все классы и работать с ним. Или вы можете использовать AutoMapper – Brian