using System.Linq.Expressions;
namespace ConsoleApplication1
public static Func<TFrom, TTo> MakeCast<TFrom, TTo>()
var tfrom = typeof(TFrom);
ParameterExpression eParam = Expression.Parameter(tfrom);
Expression body = Expression.Convert(eParam, tto);
var l = Expression.Lambda<Func<TFrom, TTo>>(body, eParam);
public static void Main(string[] args)
var mc = MakeCast<Int32, E>();