有一个界面:
public interface IFoo {
}
Silverlight用户控件具有IFoo
个实例的集合:
public ObservableCollection<IFoo> Items { get; set; }
有一个实现接口的抽象类:
abstract public class Foo : IFoo {}
一个进一步源于此的课程:
public class DerivedFoo : Foo {}
尽管如此,我试图通过XAML将DerivedFoo的实例添加到控件的集合中,但是我收到的错误是DerivedFoo不是IFoo类型,不能在泛型集合中使用。
我确实在一个论坛中发现了一个帖子,说这是Silverlight 3中的一个错误但是会被修复(我使用的是Silverlight 4)。这仍然是一个错误,还是我错了?
更新的 我的代码在家里,而且我在工作,所以我不能发布实际的XAML,但是从内存中可以看出:
<my:Thing>
<my:Thing.Items>
<my:DerivedFoo ... />
</my:Thing.Items>
</my:Thing>
答案 0 :(得分:1)
答案是......
通用集合的CollectionChanged事件处理程序在Add操作期间进行了不正确的强制转换。