public Expression <Func <T, int> > CreateGetSizeMethod() { var obj = Expression.Parameter(typeof(T), "obj"); var body = PersistSizeHelper.CreateSizeBody(obj, CharSize, MembersOrder, AllowNull); return(Expression.Lambda <Func <T, int> >(body, obj)); }
public Expression <Func <IData, int> > CreateGetSizeMethod() { var idata = Expression.Parameter(typeof(IData), "idata"); var dataType = typeof(Data <>).MakeGenericType(Type); var dataValue = Expression.Variable(Type, "dataValue"); var assign = Expression.Assign(dataValue, Expression.Convert(idata, dataType).Value()); var body = PersistSizeHelper.CreateSizeBody(dataValue, CharSize, MembersOrder, AllowNull); return(Expression.Lambda <Func <IData, int> >(Expression.Block(new ParameterExpression[] { dataValue }, assign, body), idata)); }