【问题标题】:Why is BindingListCollectionView sealed? [closed]为什么 BindingListCollectionView 是密封的? [关闭]
【发布时间】:2026-01-06 09:00:02
【问题描述】:

我有一个ICollectionView 接口的扩展,允许我处理多选 (IMultiSelectCollectionView)。我想提供一个与BindingListCollectionView 兼容的实现,但该类是密封的。有谁知道为什么做出这个设计决定?

【问题讨论】:

  • 密封通常在某人依赖于无法更改的类的实现细节时完成。最好的例子是 .NET 中的 ImageList 类,它是原生 ImageList 控件的包装器。您不能给ListView 任何其他类型的ImageList,而不是包装本机ImageList 的ImageList,因为ListView 要求 Imagelist 包装本机控件。即使你想创建一个支持 alpha 混合 PNG 图像的后代 ImageList,你也不能使用它。所以 BindingListCollectionView 是密封的,因为有人依赖违反了它的封装。

标签: c# .net wpf icollectionview


【解决方案1】:

密封类通常表示对派生类的保护,这可能会极大地改变原始类的基本行为。反正我也不知道封那个班的真正意义是什么。

【讨论】: