Здравствуйте, AndrewVK, Вы писали:
AVK>Не?
static TReturn Using<TValue, TReturn>(Func<TValue> val, Func<TValue, TReturn> callback) {...}
тогда уж.
Иначе
первый же залетевший дятел одно исключение — и утёкший ресурс
UPD.
P.S. Кто сказал
future монада?
public static Func<TReturn> Then<TValue, TReturn>(this Func<TValue> val, Func<TValue, TReturn> callback) { return () => callback(val()); }
...
Func<string> a = () => Console.ReadLine();
var b = a
.Then(_ => int.Parse(_))
.Then(_ => Math.Sqrt(_))
.Then(_ => { Console.WriteLine(_); return _; });
var c = b();
P.P.S. Все вопросы "НО ЗАЧЕМ???" — к топикстартеру. Это ему нужны были юзинги в выражениях