如何使用通用集合实现自定义类型安全集合?

3

我曾使用继承自CollectionBase类的强类型集合,现在希望将其改为继承自类型安全的泛型集合。一些人建议继承自List<T>,然而其他一些人则建议使用Collection<T>。我的意图是:

1)我有一个自定义类,并正在创建一个只包含该自定义类实例的集合。

2)我想让自定义集合类拥有一些属性和方法。例如,它应该具有一个Id属性,或者它应该具有一个IsBlahBlah()方法。

我该如何进行下一步?当我从CollectionBase类派生时,我使用InnerList属性来访问元素。如果我选择使用Collection<T>,那么我应该使用Items属性吗?

做这样的事情是否可行:

public class MyCustomCollection : Collection<MyCustomClass>
{
    public int ExtraProperty { get; set; }

    public bool IsFortyTwo(MyCustomClass) { }
}

正确的方法是什么?它是否可以直接使用而不会干扰Collection<T>中的方法?

附加问题:当我在Google上搜索“强类型集合”时,总是会显示包含CollectionBase类的结果。 强类型集合类型安全集合之间有什么区别?

1个回答

1

我认为需要实施像这样的方式

public class MyCustomCollection
{
    private Collection<MyCustomClass> _collection = new Collection<MyCustomClass>();
    public int ExtraProperty { get; set; }
    public bool IsFortyTwo(MyCustomClass) { }
}

我不理解的是,当我添加一个 private Collection<MyCustomClass> _collection 时,Collections.Add() 方法如何知道我的新集合并将项目添加到其中?我认为它有自己的内部集合。 - hattenn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接