填充ObservableCollection时出错

时间:2011-05-09 12:36:33

标签: c# list subclass superclass

我有这段代码:

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

因此,this.ExaminationViewModel.Examination.QuestionClusters的类型为QuestionClusterQuestionCLusterGuiQuestionCluster的超类。我写的代码不起作用,它给出了错误。但我想知道我是如何解决这个问题的,是否有一点技巧呢?

第一个错误:

  

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

第二

  

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

1 个答案:

答案 0 :(得分:0)

由于类型不同,没有诀窍。您可以选择以下选项:

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