foreach 无法对 'object' 类型的变量进行操作,因为 'object' 不包含 'GetEnumerator' 的 public 实例或扩展定义

foreach can't operate on variables of type 'object' because 'object' doesn't contain a public instance or extension definition for 'GetEnumerator'

private void pckItemCode_SelectedIndexChanged(object sender, EventArgs e)
        {
            var picker = (Picker)sender;
            int selectedIndex = picker.SelectedIndex;

            if (selectedIndex != -1)
            {

                var field = picker.ItemsSource[selectedIndex];

                foreach (var data2 in field)
                {

                }
            }
        }

我想从 ItemSource 获取数据,当我从 var 字段循环数据时,出现错误..我该怎么办?

您要访问所选对象的属性,对吗?

然后,您可以像您的代码一样通过selectedIndex获取所选对象,我们可以通过将对象转换为Picker的项目类型来访问所选对象的属性。

请参考以下代码:

    private void Picker_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        var picker = (Picker)sender;
        int selectedIndex = picker.SelectedIndex;

        if (selectedIndex != -1)
        {
            // here you can cast the field to your type,mine is `Monkey `
            Monkey field = (Monkey)picker.ItemsSource[selectedIndex];

            System.Diagnostics.Debug.WriteLine("--------> "+ selectedIndex+"<---->" + field.Name);

        }
    }

注:

因为 field 不是列表,所以我们不能遍历 field

foreach (var data2 in field) // Code usage error
            {

            }
private void pckItemCode_SelectedIndexChanged(object sender, EventArgs e)
        {
            var picker = (Picker)sender;
            int selectedIndex = picker.SelectedIndex;

            if (selectedIndex != -1)
            {
                var field = picker.ItemsSource[selectedIndex];

                foreach (var propertyInfo in field.GetType().GetProperties())
                {
                        string test = propertyInfo.GetValue(field).ToString();
                        string test2 = propertyInfo.Name;
                }
            }
        }

我终于找到了这个答案,我想从对象中获取 属性 值,我明白了..感谢所有帮助回答我问题的人