У меня есть метод C#, который мне нужно передать в различные списки. Тип списков будет отличаться очень часто. Сам метод находится в другой dll и не может знать объекты класса, содержащиеся в списках (без ссылок, без использования операторов). Метод должен читать каждый из членов каждого из элементов в списке и строить и возвращать строку, основанную на этом.C# Определить тип общего списка
Мой вопрос в том, как можно получить метаданные для этих различных объектов в compiletime/runtime? Будет ли отражение этого?
Кроме того, как только я получаю метаданные, как я могу использовать его для фактического использования переменных?
Спасибо
EDIT: В настоящее время я использую его, как следующее:
public string GetData(List<User> list){
//...
List<RowData> rows = new List<RowData>();
foreach (User item in list)
{
RowData row = new RowData();
row.id = count++;
row.cell = new string[3];
row.cell[0] = item.ID.ToString();
row.cell[1] = item.name;
row.cell[2] = item.age.ToString();
rows.Add(row);
}
//...
return new JavaScriptSerializer().Serialize(rows.ToArray());
Сейчас это очень специфический. Я хочу заменить это дженериками, чтобы я мог передавать элементы, отличные от «Пользователь»
Отражение является то, что вы хотите, да. См. Этот ответ для некоторых хороших вводных ссылок: http://stackoverflow.com/questions/9428779/a-good-and-complete-tutorial-about-reflection-in-net –
Возможно, подумайте об использовании 'dynamic', чтобы избежать прыжков через обручи с отражением напрямую. –
Я уточнил вопрос по поводу использования – Mike