Beispiel #1
0
        public Expression <Func <BinaryReader, IData> > CreateReadMethod()
        {
            var reader = Expression.Parameter(typeof(BinaryReader), "reader");

            var dataType = typeof(Data <>).MakeGenericType(Type);

            return(Expression.Lambda <Func <BinaryReader, IData> >(
                       Expression.Label(Expression.Label(dataType), Expression.New(dataType.GetConstructor(new Type[] { Type }), PersistHelper.CreateReadBody(reader, Type, MembersOrder, AllowNull))),
                       reader
                       ));
        }
Beispiel #2
0
        public Expression <Func <BinaryReader, T> > CreateReadMethod()
        {
            var reader = Expression.Parameter(typeof(BinaryReader), "reader");

            return(Expression.Lambda <Func <BinaryReader, T> >(PersistHelper.CreateReadBody(reader, Type, MembersOrder, AllowNull), reader));
        }
Beispiel #3
0
        public 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, AllowNull)), writer, idata));
        }