2009-06-03 4 views

Odpowiedz

30

Zawiń w delegata typu Func<T, TResult> z fikcyjną wartością zwrotną, np.

public static void Execute(Action<T> remoteCall) 
{ 
    Execute(t => { remoteCall(t); return true; }); 
} 
8

prosi się dosłownie o przekazanie czegoś, co nie dostarcza wyniku do funkcji, która tego wymaga.
To nie ma sensu.

można łatwo przekonwertować dowolną funkcję Formularza Action<T> do Func<T,TResult> jeśli jesteś gotów dostarczyć jakąś wartość wynikową (bezpośrednio lub pośrednio)

Func<T,TResult> MakeDefault<T,TResult>(Action<T> action) 
{ 
    return t => { action(t); return default(TResult);}; 
} 

lub

Func<T,TResult> MakeFixed<T,TResult>(Action<T> action, TResult result) 
{ 
    return t => { action(t); return result; }; 
}