Action
- это делегат с типом возврата void
, поэтому, если вы хотите, чтобы он возвращал значение, вы не можете.
Для этого вам необходимо использовать Func
делегат (их много - последним параметром типа является тип возвращаемого значения).
Если вы просто хотите, чтобы TryAction
возвращал универсальный тип, превратите его в универсальный.Метод:
protected T TryAction<T>(Action action)
{
try
{
action();
}
catch(Exception e)
{
// write exception to output (Response.Write(str))
}
return default(T);
}
В зависимости от того, что именно вы пытаетесь сделать, вам может понадобиться использовать как общий метод, так и Func
делегат:
protected T TryAction<T>(Func<T> action)
{
try
{
return action();
}
catch(Exception e)
{
// write exception to output (Response.Write(str))
}
return default(T);
}