Получение объектной модели.Сбор для чтения для foreach

#c# #readonly-collection

#c# #сбор только для чтения

Вопрос:

Я хочу получить значения и ключи объекта. Сначала я его разыгрываю, а затем помещаю в foreach цикл, чтобы получить ключи и значения.

 object itemAttributes = web.javaScriptExecutor().ExecuteScript($"return window.INITIAL_STATE.items.itemAttributes")

                    var items = (ReadOnlyCollection<object>)itemAttributes;


                        foreach (Dictionary<string, object> item in items)
                        {
                            foreach (KeyValuePair<string, object> kvp in item)
                            {
                                if (Convert.ToString(kvp.Value) != null)
                                {
                                     Name = Convert.ToString(kvp.Key), Value = Convert.ToString(kvp.Value) });
                                }
                            }
                        }
  

Я получаю сообщение об ошибке, когда хочу выполнить приведение

 var items = (ReadOnlyCollection<object>)itemAttributes;

//Unable to cast object of type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' to type 'System.Collections.ObjectModel.ReadOnlyCollection`1[System.Object]'.
  

Комментарии:

1. Почему ReadOnlyCollection ? Почему <object> ? В следующей строке вы перечисляете items , как будто у вас есть IEnumerable<Dictionary<string,object>> , но itemsAttributes , похоже, это всего лишь один словарь. Сначала удалите это foreach и назначьте var item = (Dictionary<string, object>)itemAttributes .

2. @Sinatr я совершил большую ошибку. большое спасибо. проблема была решена