2017-01-12 2 views
3

Я хотел бы знать, как получить свойства моего динамического типа.Получить свойства динамического типа

Это функция, чтобы получить список,

var result = _files.GetFileContent(reportId).Result; 

В качестве примера я получаю возвращаемый объект как это:

enter image description here

Когда я открываю его, вы можете увидеть свойства I есть:

enter image description here

Идея заключается в том, что я никогда не знаю свойств. Они могут меняться со временем. Поэтому я хочу список, заполненный всеми свойствами. Поэтому я могу динамически их использовать.

Как получить свойства из первого элемента (ChargesDelta_DIFF_5, ChargesEfile_RIGHT, ChargesGecep_LEFT и т. Д.)?

+0

Как 'MyDynamicType' объявлен? Как объявляется коллекция? –

+0

Вы пробовали https://msdn.microsoft.com/en-us/library/aky14axb(v=vs.110).aspx? –

+0

Он объявляется динамически на основе свойств, которые я получаю из хранимой процедуры. – Walter

ответ

4

Вы можете использовать отражение, чтобы получить свойства, и преобразовать его в словарь:

dynamic v = new { A = "a" }; 

Dictionary<string, object> values = ((object)v) 
            .GetType() 
            .GetProperties() 
            .ToDictionary(p => p.Name, p => p.GetValue(v)); 
+0

И как я могу использовать мой существующий динамический IList в этом? – Walter

+1

Что такое p? Это не помогает просто вводить неизвестные переменные. Эта строка бросает: CS1977 \t Невозможно использовать лямбда-выражение в качестве аргумента для динамически отправленной операции, не отбросив его непосредственно до типа делегата или дерева выражений. – Harmen

+0

Я не уверен, что вы имеете в виду. Это не просто неизвестная переменная, это аргумент выражения лямбда. Код должен быть точным. Можете ли вы создать новый вопрос и связать его здесь? Пожалуйста, введите полный код. @harmen –

Смежные вопросы