public Expression <Action <BinaryWriter, T> > CreateWriteMethod() { var writer = Expression.Parameter(typeof(BinaryWriter)); var item = Expression.Parameter(Type); return(Expression.Lambda <Action <BinaryWriter, T> >(PersistHelper.CreateWriteBody(item, writer, MembersOrder, AllowNull), writer, item)); }
private Expression <Action <BinaryWriter, IData> > CreateWriteMethod() { var writer = Expression.Parameter(typeof(BinaryWriter), "writer"); 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()); return(Expression.Lambda <Action <BinaryWriter, IData> >(Expression.Block(new ParameterExpression[] { dataValue }, assign, PersistHelper.CreateWriteBody(dataValue, writer, MembersOrder, false)), writer, idata)); }