Расширение делегата. Предложения и любые улучшения приветствуются. Этот код в настоящее время используется в одном из проектов.
internal static class xt
{
public static Func<From, To> Next<From, To>(this From @obj, Func<From, To> transform)
{
return (fr) => transform(fr);
}
public static Func<Tform, TForward> Next<Tform, Tto, TForward>(this Func<Tform, Tto> g, Func<Tto, TForward> f)
{
return (tf) => f(g(tf));
}
public static Tto Input<Tfrom, Tto>(this Func<Tfrom, Tto> fx, Tfrom data)
{
return fx(data);
}
public static void Execute(this Action fx)
{
fx();
}
public static Func<Tform, Tto> Next<Tform, Tto>(this Func<Tform> g, Func<Tform, Tto> f)
{
return tf => f(g());
}
}