Я использую дженерики перевести Java код C# и возникли проблемы с контейнерами сорта:с использованием дженериков в C# расширения функций
public static class MyExtensions
{
public static void add(this List<object> list, object obj)
{
list.Add(obj);
}
public static void add(this List<string> list, string s)
{
list.Add(s);
}
}
кажется, что дженерики теряются в сравнении аргументов и два метода сталкиваются , Я бы хотел, чтобы какие-либо советы о том, можно ли использовать дженерики таким образом. Можно ли поддерживать все операции с списком одним листом:
public static void add(this List<object> list, object obj)
{
list.Add(obj);
}
например,?
РЕЗЮМЕ Все ответы имеют такое же решение. Список может быть отнесен к ICollection. В целом, вероятно, это не очень хорошая идея для производственного кода.
Что вы подразумеваете под «двумя методами сталкиваются»? Показанный класс компилируется без ошибок. –
Когда я вызываю методы формы myList.add (foo), он сообщает, что не может найти правильный метод - он имеет неправильные аргументы –
Убедитесь, что пространство имен этого класса включено в файл через «using MyExtensionsNamespace;» –