Как имитировать "Func <(Of <(TResult>)>) Delegate" в .NET Framework 2.0?

Я пытаюсь использовать класс из этой статьи 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?

Ответы

Ответ 1

К счастью,.NET 2.0 уже поддерживает generics, поэтому вы можете просто создать свой собственный делегат с той же подписью:

public delegate T Func<T>();

Ответ 2

Как говорит Конамиман, вы можете легко объявить свои собственные типы делегатов. На моей странице версии, я их всех объявил, поэтому вы можете просто вырезать и вставить их:

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, поэтому его отсутствие выше.)