C#学习教程:如何在.NET2.0中创建一个自定义集合如下所示:publicclassMyCollection:System.Collectio.CollectionBase{MyCollection(){}publicvoidAdd(MyClassitem){this.List.Add(item);}}classMyClass{公共字符串名称;让我问几个问题:当我在.NET3.5框架上工作时,这种方法是否正确且新颖。我想从我的Web服务(WCF)公开这个集合。我应该怎么办?我必须实施GetEnumerator吗?这会绑定到DataGridView吗?从List派生有点毫无意义,尤其是现在它具有IEnumerable构造函数和扩展方法的可用性。除了Equals、GetHashCode和ToString之外,它没有可以重写的虚拟方法。(如果你的目标是为列表实现Java的toString()函数,我想你可以从List派生。)如果你想创建自己的强类型集合类并可能在添加/删除项目时自定义集合行为,你需要从一个新的(到.NET2.0)类型派生System.Collections.ObjectModel.Collection,它有受保护的虚方法,包括InsertItem和RemoveItem,你可以在这些时候覆盖它们来执行操作。请务必阅读文档-这是一个非常容易派生的类,但您必须了解公共/非虚拟和受保护/虚拟方法之间的区别。?publicclassMyCollection:Collection{publicMyCollection(){}publicMyCollection(IListlist):base(list){}protectedoverridevoidClearItems(){//TODO:必要时在此处验证boolcanClearItems=...;if(!canClearItems)thrownewInvalidOperationException("Thecollectioncannotbeclearedwhile_____.");base.ClearItems();}protectedoverridevoidRemoveItem(intindex){//TODO:必要时在此处验证boolcanRemoveItem=...;if(!canRemoveItem)thrownewInvalidOperationException("在_____期间无法删除项目。");base.RemoveItem(索引);我认为你最好使用System.Collections.Generic中定义的容器类之一,当我在.NET3.5框架上工作时,这种方法是正确的和新的。我想从我的Web服务(WCF)公开这个集合。我应该怎么办?我必须实施GetEnumerator吗?这会绑定到DataGridView吗?如果你想要你自己的集合类,你也可以从一个泛型集合继承到一个非泛型类,例如:publicclassMyCollection:List{}这样你就可以获得列表的所有功能(例如)。您只需要添加一些构造函数。为什么不使用通用集合?使用系统;使用System.Collections.Generic;namespaceTest{classMyClass{}classProgram{staticvoidMain(string[]args){//这是一个专门的集合Listlist=newList();//添加'MyClass'类型的元素list.Add(newMyClass());//iterateforeach(MyClassminlist){}}}}编辑:Ashu,如果你想对添加和删除操作做一些验证,你可以使用通用集合作为专门集合的成员:usingSystem;使用System.Collections.Generic;namespaceTest{classMyClass{}classMyClassList{protectedList_list=newList();publicvoidAdd(MyClassm){//你的验证在这里..._list.Add(m);}publicvoidRemove(MyClassm){//你的验证在这里..._list.Remove(m);}publicIEnumeratorGetEnumerator(){return_list.GetEnumerator();}}classProgram{staticvoidMain(string[]args){MyClassListl=newMyClassList();l.Add(newMyClass());//iterateforeach(MyClassminl){}}}}也许我在这里遗漏了一些东西,但如果你只需要添加验证,为什么不继承泛型集合并覆盖New()Remove()或任何其他方法以上就是C#学习教程:如何在.NET2.0中创建自定义集合的全部内容。Follow—classCustomeCollection:List{publicnewvoidAdd(Titem){//在这里验证base.Add(item);}publicnewvoidRemove(Titem){//在这里验证base.Remove(item);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
