我有Person
和PersonList
班。如果有人尝试添加具有相同ID的人,则应抛出异常。我尝试覆盖Equals()
方法,但未检查子列表中的ID。
例如:
Person father = new Person(id: 1);
father.Children.Add(new Person(id: 1));'
这应该引发异常,因为ID为1的人已经存在。
class Person {
public int ID { get; private set; }
public PersonList Chilren { get; set; }
public Person(int id) {
Chilren = new PersonList();
this.ID = id;
}
public override bool Equals(object obj) {
return this.ID == (obj as Person).ID;
}
}
class PersonList : List<Person> {
new public void Add(Person person) {
if (Contains(person)) {
throw new Exception("Person already exists!");
}
base.Add(person);
}
}