Can I have a class with a generic list and expose that as the default value
我基本上想在代码中这样做:
1 2 3 4 5 6 7 | PersonList myPersonList; //populate myPersonList here, not shown Foreach (Person myPerson in myPersonList) { ... } |
类声明
1 2 3 4 5 6 7 | public class PersonList { public List<Person> myIntenalList; Person CustomFunction() {...} } |
那么,如何在类中公开"myInternalList"作为foreach语句可以使用它的默认值呢?或者我可以吗?原因是我有大约50个类当前正在使用泛型集合,我想将它们转移到泛型,但不想重新编写大量的类。
你可以让个人列表实现
1 2 3 4 5 6 7 8 9 10 11 12 | public class PersonList : IEnumerable<Person> { public List<Person> myIntenalList; public IEnumerator<Person> GetEnumerator() { return this.myInternalList.GetEnumerator(); } Person CustomFunction() {...} } |
或者更简单,只需让人员列表扩展列表:
1 2 3 4 | public class PersonList : List<Person> { Person CustomFunction() { ... } } |
第一种方法的优点是不公开
最简单的方法是从通用列表继承:
1 2 3 4 5 6 7 8 | public class PersonList : List<Person> { public bool CustomMethod() { //... } } |
为什么你不简单地把个人列表上的基类改成