public List<BaseDoor> GetChain() { List<BaseDoor> list = new List<BaseDoor>(); BaseDoor c = this; do { list.Add( c ); c = c.Link; } while ( c != null && !list.Contains( c ) ); return list; }