Мне нужна поточная реализация списка, поэтому я создал переопределение для всех функций списка и реализовал все (полезные) функции Linq и окружил их блокировкой. Единственная функция Linq, которую мне не удалось реализовать, - это Select.
Так выглядит функция Select в реализации Linq
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);
Я пытаюсь это переопределить. Видно, что select требует использования T и TResult, но для переопределения реализации списка у меня есть только T. Это то, что я пробовал до сих пор:
public partial class ThreadSafeList<T> : List<T>
{
public object _lock = new object();
public IEnumerable<TResult> Select(Func<T, TResult> selector)
{
lock (_lock)
{
return System.Linq.Enumerable.Select(this, selector);
}
}
}
Но TResult не существует. Любые идеи о том, как я могу переопределить реализацию Linq Select?