指定的强制转换在 Xamarin 表单中无效

Posted

技术标签:

【中文标题】指定的强制转换在 Xamarin 表单中无效【英文标题】:Specified cast is not valid in Xamarin Forms 【发布时间】:2022-01-13 03:40:18 【问题描述】:

有谁知道当出现像 Specified cast is not valid 这样的错误时会发生什么?我评论了错误发生的那一行

private async void GetEmployee()
 
     var _token = await GetAccessToken();            
     using (var _client = new HttpClient())
     
         var _uri = "domain here";

         _client.BaseAddress = new Uri(_uri);
         _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
         _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _token);

         var _response = await _client.GetAsync("endpoint here'");

         var Emp = JsonConvert.DeserializeObject<Employee>(await _response.Content.ReadAsStringAsync());
         Employee = new ObservableCollection<Employee>((IEnumerable<Employee>)Emp); //Im having error on this line
     
 

 ObservableCollection<Employee> _employee;
 public ObservableCollection<Employee> Employee
 
     get
     
         return _employee;
     
     set
     
         _employee = value;
         OnPropertyChanged();
     
 

【问题讨论】:

为什么允许将单个元素转换为该元素的数组?尝试将new[] Emp 传递给new ObservableCollection&lt;Employee&gt; 构造函数调用,而不是传递Emp 嗨@UweKeim 我是新手,我该怎么办? 【参考方案1】:

如何改变这个:

Employee = new ObservableCollection<Employee>((IEnumerable<Employee>)Emp);

到这里:

Employee = new ObservableCollection<Employee>(new[] Emp);

See .NET Fiddle example.

See ObservableCollection documentation.


new[] ... new Employee[] ... 的缩写,并使用 中的初始值创建一个新数组。

See array documentation.

【讨论】:

嗨@UweKeim 我试过了,它工作我是编程新手谢谢你帮助我:)

以上是关于指定的强制转换在 Xamarin 表单中无效的主要内容,如果未能解决你的问题,请参考以下文章

执行标量();使用 scope_identity() 生成“System.InvalidCastException:指定的强制转换无效”[重复]

如何修复 C# 中的“指定强制转换无效”错误?

C# LINQ 生成“指定的强制转换无效”错误

指定的强制转换无效错误

尝试在 C# 中迭代​​ IEnumerable<int> 时,指定的强制转换无效

System.InvalidCastException:指定的强制转换无效。错误