Хорошо, я думаю, что понимаю, что вы пытаетесь сделать сейчас. Спасибо за разъяснения.
Сначала вам нужно объявить класс Hierarchy
как общий, заменив public class Hierarchy
на public class Hierarchy<T>
. Мы также установим ограничение на то, что T
должно быть HierarchyItem
.
public class Hierarchy<T> where T : HierarchyItem
Мы заменим private List<HierarchyItem> items
на
private List<T> items;
и public void AddItem(HierarchyItem item)
с
public void AddItem(T item)
И, наконец, строка foreach (HierarchyItem item in items)
в поиске метода должна быть заменена на
foreach(T item in items).
Таким образом, мы получаем
public class Hierarchy<T> where T: HierarchyItem {
List<T> items;
public Hierarchy() {
items = new List<T>();
}
public void AddItem(T item) {
items.Add(item);
}
public List<T> Search(string searchText) {
List<T> results = new List<T>();
foreach (T item in items) {
if (item.DisplayText().ToLower().Contains(searchText.ToLower())) {
results.Add(item);
}
}
return results;
}
}
И это должно быть то, что вы ищете.