当前位置:  开发笔记 > 编程语言 > 正文

我应该将List <T>子类化还是将其作为属性?

如何解决《我应该将List<T>子类化还是将其作为属性?》经验,为你挑选了2个好方法。

在过去的几个月里,我经常遇到这个问题,在此期间我一直在构建这个系统.场景是这样的:我有这种对象,本质上是一个其他对象的列表,但有一些特定于其性质的其他属性.例如:

课程Tests:

包含许多Test对象

有属性:

DefaultTimeouts

DefaultNumberOfTries

我应该拥有这个类的子类,List还是应该继承它Object,只需将列表作为属性放在其他字段旁边?

我知道这可能有点主观,个人品味可能在这里发挥作用,但我全心全意地想知道你对此的看法.



1> Mendelt..:

与大多数答案相反,在大多数情况下,我不会从List继承.我发现从类继承到重用功能通常会在以后引起问题.

我通常只有一个List(或IList)类型的属性,它返回对列表的引用.通常你只需要一个获得房产.您可以通过选择使用.AsReadOnly()返回列表的只读版本或仅将列表公开为IEnumerable来控制对列表的访问.

在我希望测试成为列表的情况下,我通常实现IList并为IList的实际实现调用内部List字段.这是一个更多的工作,并导致一些更多的代码要维护,但我发现这比继承List更好的可维护性只是为了它的实现.


正如对此的一个侧面说明,FxCop有一条规则,基本上说明你不应该向公众公开List .相反,您应该使用本回答中建议的只读集合或Collection ,以便能够在不破坏代码的情况下更改实现细节.

2> Mark McDonal..:

List 中的子类.如果您将List generic作为属性,则不能将其封装为子类.

如果它看起来像List ,它听起来像List ,它可能是List .

我称之为TestCollection.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有