gpt4 book ai didi

c# - 业务对象集合在不扩展 Collection 时是否应该继承它?

转载 作者:行者123 更新时间:2023-11-30 15:50:20 24 4
gpt4 key购买 nike

我有一个继承自 Collection 的业务对象集合(表示来自数据库的数据),并有一个调用存储过程然后用返回的数据填充其属性的静态方法。

我的问题是;从 Collection 继承是错误的,因为它并没有真正扩展类吗?还是不继承任何东西而是维护一个 Collection 类型的私有(private)变量会更好?

最佳答案

如果没有看到关于您正在尝试做的事情的更多细节,很难给出答案。但是,我通常不会从 Collection 继承,因为它并没有真正提供足够的虚拟方法来覆盖。这可能会使将来改变类的行为变得有些棘手。

继承的问题在于,如果您使用它,您将永远受制于 Collection 基类的行为,或者面临复杂的重构。例如,您可能想要添加过滤、搜索和排序操作,此时您需要从 Collection 切换到 List。您甚至可能想要在需要 BindingList 而不是 Collection 的地方进行数据绑定(bind)。

一个不同的计划是从 ICollection 或更好的 IList 继承,然后委托(delegate)给私有(private) Collection 成员。这为您提供了最大程度的控制,并允许您在不影响公共(public)接口(interface)的情况下更改类的内部表示。这样做的问题是开发类(class)需要更长的时间。

因此,您面临的是更快的开发和 future 的灵 active 之间的权衡,正如我在开始时所说的那样,根据原帖中提供的信息判断该走哪条路有点困难。

PS:要使 IList 实现只读,只需从 IsReadOnly 返回 true,然后从所有改变列表的方法中抛出 NotSupportedException。

关于c# - 业务对象集合在不扩展 Collection<T> 时是否应该继承它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com