Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }