填充 ObservableCollection 时出错

发布于 2024-11-05 14:24:16 字数 792 浏览 0 评论 0原文

我有以下代码:

ObservableCollection<GuiQuestionCluster> clusters = new ObservableCollection<GuiQuestionCluster>(this.ExaminationViewModel.Examination.QuestionClusters);

因此,this.ExaminationViewModel.Examination.QuestionClusters 属于QuestionCluster 类型。 QuestionCLusterGuiQuestionCluster 的超类。我写的代码不起作用,它给出了错误。但我想知道如何解决这个问题,有什么小技巧吗?

第一个错误:

错误1 最好的重载方法 匹配 'System.Collections.ObjectModel.ObservableCollection.ObservableCollection(System.Collections.Generic.IEnumerable)' 有一些无效参数

第二:

错误 2 参数 1:无法转换 从 'System.Collections.ObjectModel.ReadOnlyCollection' 到 'System.Collections.Generic.IEnumerable'

I have this code:

ObservableCollection<GuiQuestionCluster> clusters = new ObservableCollection<GuiQuestionCluster>(this.ExaminationViewModel.Examination.QuestionClusters);

So, this.ExaminationViewModel.Examination.QuestionClusters are of the type of QuestionCluster. QuestionCLuster is the superclass of GuiQuestionCluster. The code I wrote didn't work, it gives errors. But I want to know how I fix this, is there a little trick for it?

First error:

Error 1 The best overloaded method
match for
'System.Collections.ObjectModel.ObservableCollection.ObservableCollection(System.Collections.Generic.IEnumerable)'
has some invalid arguments

Second:

Error 2 Argument 1: cannot convert
from
'System.Collections.ObjectModel.ReadOnlyCollection'
to
'System.Collections.Generic.IEnumerable'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叹沉浮 2024-11-12 14:24:16

由于类型不同,这没有什么技巧。以下是您的选择:

  • 将其设为 QuestionClusters 集合而不是 GuiQuestionClusters
  • 使用 foreach 循环将项目添加到列表中。您必须创建对象并直接赋值,或者使用采用基类类型的重载构造函数。原则上这不是最好的设计,因为它可能导致部分分配。
  • 您可以探索使用继承或扩展方法来解决此问题

There is no trick to this, because of the type difference. Here are your options:

  • Make it a QuestionClusters collection rather than GuiQuestionClusters
  • Use a foreach loop to add item to the list. You will have to create the object and assign value directly or use an overloaded constructor that takes the base class type. This is in principle not the best design as it can cause partial assignment.
  • You can explore using inheritance or extension method to workaround this
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文