继承自 ObservableCollection 的集合 - 有什么好处?

2023-11-22

看完之后这篇 MSDN 文章,我现在想知道将集合定义为继承自的类有什么好处(如果有的话)ObservableCollection。这之间是否有任何显着差异:

class MyCollection : ObservableCollection<MyObject> { }

class Class1
{
    private MyCollection _newCollection = new MyCollection();

    public Class1()
    {
        _newCollection.Add(new MyObject());
    }
}

和这个:

class Class1
{
    private ObservableCollection<MyObject> _newCollection = new ObservableCollection<MyObject>();

    public Class1()
    {
        _newCollection.Add(new MyObject());
    }
}

我在这里忽略了什么吗?


一个主要好处是您可以定义Add函数,这使得内联初始化更容易。例如:

class MyCollection : ObservableCollection<MyObject> 
{  
    public void Add(string prop1, string prop2)
    {
        base.Add(new MyObject { Prop1 = prop1, Prop2 = prop2 });
    }
}

让你写这个:

MyCollection collection = new MyCollection
{
    { "prop1", "prop2" },
    { "prop1", "prop2" },
};

第二个(相关的)好处:如果您使用 XAML,则拥有子类集合可以让您将集合实例(用于设计/测试用例)定义为标记,如下所示:

<local:MyCollection xmlns:local="MyNamespace">
    <local:MyObject Prop1="prop1" Prop2="prop2" />
    <local:MyObject Prop1="prop1" Prop2="prop2" />
</local>

最后,(我认为这只是一个品味问题)它一般不会造成伤害,而且可以提供帮助。有时,您最终需要给定集合类型更多的方法/属性。准备好类型化子类是件好事,无需重构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

继承自 ObservableCollection 的集合 - 有什么好处? 的相关文章

随机推荐

  • 在Java中如何确保当前本地时间是正确的? [复制]

    这个问题在这里已经有答案了 我需要确保在我的客户端应用程序中 用户不会显着更改机器日期 例如 将其更改为 1 个月前 据我所知 在 Java 中检查当前时间的最佳方法是 System currentTimeInMillis 在多平台环境 W
  • 如何使用Python + Webdriver进行远程连接

    我正在尝试弄清楚如何连接到我的远程网络驱动程序实例 这是我当前使用的代码 from selenium remote webdriver import WebDriver driver WebDriver http 172 16 205 12
  • 在 Docker 容器中使用 VNCserver + GUI 应用程序 + Virtual Display

    我想在 docker 容器内运行 firefox 或任何图形应用程序 我的要求 当我启动容器时 我应该创建一个虚拟显示 启动 VNC 服务器 然后启动 GUI 应用程序 这意味着容器成功启动后 我可以通过 VNC 客户端连接到容器内运行的
  • 在 React.js 中,如何在用户单击后退按钮时运行函数?

    我环顾四周并尝试使用 React router 找到解决方案 通过 V5 您可以使用
  • fasta.gz 上的 SeqIO.parse

    编码新手 Pytho biopython 新手 这是我在网上的第一个问题 如何打开压缩的 fasta gz 文件以提取信息并在我的函数中执行计算 这是我正在尝试执行的操作 我尝试了不同的方法 以及错误是什么的简化示例 我正在使用的 gzip
  • 在 WPF 中仅使用 XAML 根据 TextBox 的文本过滤 ListBox 的项目

    我目前有一个绑定到项目集合的列表框 由于集合很大 我们希望根据在文本框中输入的文本来过滤显示的项目 我要问的是 是否可以仅使用 XAML 来实现 我不想修改项目集合 我想根据过滤器修改每个项目的可见性 希望它清楚 thanks 就像 Cod
  • 使用 PowerShell 脚本执行 EXE 文件

    我正在尝试使用 PowerShell 脚本执行 EXE 文件 如果我使用命令行 它可以正常工作 首先我提供可执行文件的名称和一系列参数来调用它 C Program Files Automated QA TestExecute 8 Bin T
  • 为什么 .NET Reactive Extensions 中不推荐使用主题?

    我目前正在掌握 NET 的响应式扩展框架 并且正在研究我找到的各种介绍资源 主要是http www introtorx com 我们的应用程序涉及许多检测网络帧的硬件接口 这些将是我的 IObservables 然后我有各种组件将消耗这些帧
  • 如何在不使用框架集的情况下仅缩放 IFRAME 内容?

    我只需要缩放框架内容 在我的网页中我使用了zoom 0 75 height 520px width 800px 如果我增加缩放值 则意味着帧尺寸将会增加
  • glClear() 如何提高性能?

    Apple 关于解决闪烁问题的技术问答 QA1650 包括以下段落 强调我的 您必须为屏幕上的每个像素提供一种颜色 在绘图代码开始时 最好使用 glClear 来初始化颜色缓冲区 在帧开始时全屏清除每种颜色 深度和模板缓冲区 如果您正在使用
  • SMJobSubmit() 可以用来执行 SMJobBless 安装的特权助手吗?

    我一直在阅读文档和 SMJobBless 示例以及互联网上的各种讨论 我的应用程序现在使用安装特权助手SMJobBless 但助手根本不运行 帮助程序的全部目的是在应用程序启动时加载 kext 这是我的应用程序的重要组件 我看到的例子表明
  • zend 形式的数组输入,如 name="person[]"

    在普通的 html 中 我们可以有一个数组字段 例如person
  • 单个 Prisma 查询中的 LEFT JOINS 和聚合

    我有一个包含多个表的数据库 经常需要查询LEFT JOIN以便结果包含来自其他表的聚合数据 我的 Prisma 架构的片段 model posts id Int id unique default autoincrement user id
  • 使用变量作为格式指令的前缀参数

    我需要打印一些前面有可变数量空格的内容 例如 如果我需要在文本前打印 5 个空格 我会这样做 format T 5T My Text Output My Text 我可以使用变量来代替 5 并能够向其传递值吗 我正在寻找的是这样的 form
  • Twilio React Native - 无法解析模块加密

    我正在努力实施twilio打包到我的反应本机项目中 当我在文件中需要它时 项目将无法加载 并且我看到以下错误 Unable to resolve module crypto from Users myname Documents Proje
  • AWS 和 Terraform - 安全组中的默认出口规则

    我在许多提供者是 AWS 的 Terraform 项目中看到了可重复的配置 配置出站 出口 规则以允许所有出站流量 据我了解 这是 AWS 中的默认行为 如AWS 用户指南 默认情况下 安全组包含允许所有出站流量的出站规则 您可以删除规则并
  • Delphi有没有允许路径编辑的编辑控件?

    我有各种层次结构 并且希望使用编辑器 例如下面的资源管理器地址栏中找到的 Microsoft 编辑器 进行导航 Delphi有这样的组件吗 付费还是免费 TMS 的 TAdvExplorerTreeview 可能就是您所寻找的 http w
  • 如何基于 stanford-nlp 条件随机场模型训练法国 NER?

    我发现了 stanford NLP 的工具 发现它真的很有趣 我是一名法国数据挖掘者 数据科学家 喜欢文本分析 并且很想使用你们的工具 但是 NER 在法语中不可用 这让我很困惑 我很想制作自己的法语 NER 如果认为值得的话 甚至可能将其
  • 我可以从 scala 中的重载方法中获取函数吗?

    假设我定义了两个具有相同名称和返回值但参数不同的方法 def overload x Int x toString def overload s String s 现在我想将其中之一转换为函数 如果该方法没有重载 我会这样做 val f ov
  • 继承自 ObservableCollection 的集合 - 有什么好处?

    看完之后这篇 MSDN 文章 我现在想知道将集合定义为继承自的类有什么好处 如果有的话 ObservableCollection 这之间是否有任何显着差异 class MyCollection ObservableCollection