Ответ 1
К счастью,.NET 2.0 уже поддерживает generics, поэтому вы можете просто создать свой собственный делегат с той же подписью:
public delegate T Func<T>();
Я пытаюсь использовать класс из этой статьи CodeProject в VB.NET и .NET Framework 2.0.
Все, похоже, компилируется, за исключением этой строки Private _workerFunction As Func(Of TResult)
и заголовка метода Public Sub New(ByVal worker As Func(Of TResult))
.
Я могу найти в MSDN, что эти новые делегаты (Func (Of...) поддерживаются с .NET 3.5.
Как я могу переписать это для работы в .NET 2.0?
К счастью,.NET 2.0 уже поддерживает generics, поэтому вы можете просто создать свой собственный делегат с той же подписью:
public delegate T Func<T>();
Как говорит Конамиман, вы можете легко объявить свои собственные типы делегатов. На моей странице версии, я их всех объявил, поэтому вы можете просто вырезать и вставить их:
public delegate void Action();
public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
public delegate TResult Func<TResult>();
public delegate TResult Func<T, TResult>(T arg);
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
(Я не избегал прокрутки здесь, так как вы, вероятно, не хотите, чтобы разрывы строк в среде IDE. Обратите внимание, что Action<T>
является частью .NET 2.0, поэтому его отсутствие выше.)