У меня есть следующая универсальная коллекция:
public class XList<Object> : List<Object>
{
public XList() : base()
{
}
public XList(Object[] values) : base(values)
{
}
public void Add(XList<Object> inputObjects)
{
if (inputObjects == null) { return; }
if (inputObjects.Count == 0) { return; }
foreach (Object currentObject in inputObjects) { Add(currentObject); }
}
}
Я успешно использую эту коллекцию, и это общие методы со многими типами данных. Например:
XList<int>
XList<String>
XList<XFolder>
(XFolder - это пользовательский класс, который ссылается на папку)
Теперь я хочу встроить метод в вышеприведенный класс, который специфичен для списка XFolder . Например, метод, который сортирует папки от самого длинного до наименьшего пути. Нужно ли создавать новую пользовательскую коллекцию или я могу сделать это в вышеприведенном классе, чтобы сохранить ее общие свойства / методы?
РЕДАКТИРОВАТЬ: во избежание недоразумений
@ Мэтт Берланд: Я не имею в виду гетерогенную коллекцию. Гетерогенная коллекция - это коллекция, в которой разные типы данных хранятся в одной коллекции. Каждая коллекция того, что я имею в виду, хранит данные одного и того же типа в одной и той же коллекции, но может хранить разные типы данных в разных коллекциях (одного и того же типа, а именно XList).
Моя проблема в том, что я хочу иметь возможность выполнять разные методы для каждой коллекции в соответствии с их типом:
Коллекция целых чисел должна иметь математические методы (например, добавить все числа)
Коллекция строк должна иметь строковые методы (например, сортировать строки в алфавитном порядке)
В наборе продуктов должны быть методы, применимые к продуктам (сгруппируйте их по типам продуктов)
Я бы хотел сделать в своей основной программе следующее:
XList<int> myNumberList = new XList<int>; myNumberList.Add(....//fill list with integers
XList<String> myStringList = new XList<String>; myStringList.Add(....//fill list with strings
XList<Food> myFoodList = new XList<Food>; myFoodList.Add(....//fill list with foods
int sumOfNumbers = myNumberList.sum();
myStringList.sort();
XList<Food> mySweetFoodList = myFoodList.getSweets();
В этом примере все мои коллекции являются коллекциями XList. Но у них есть разные методы в зависимости от их типов:
XList имеет метод sum ()
XList имеет метод sort ()
XList имеет метод getSweets ()
Я не знаю, возможно ли это. Я даже не знаю, правильно ли я думаю. На данный момент я придерживаюсь ответа JaredPar и использую XListExtension