Пример #1
0
        public void GetWriteILCode(PropertyData prop, BinaryStruct currentStruct, GroboIL il, GroboIL.Local binaryStruct, GroboIL.Local value, GroboIL.Local typeSize, GroboIL.Local buffer, GroboIL.Local offset, bool listValue)
        {
            var ilValue = il.DeclareLocal(prop.PropertyInfo.PropertyType);

            il.Ldloc(value);
            il.Call(prop.Getter);
            il.Stloc(ilValue);

            var exitLabel = il.DefineLabel("exit");

            il.Ldloca(ilValue);
            BinaryStruct.WriteNullableType <TType>(il, exitLabel, buffer, offset);

            var nval = il.DeclareLocal(typeof(TType));

            il.Ldloca(ilValue);
            il.Call(Getter);
            il.Stloc(nval);

            (new T()).GetWriteILCode(prop, currentStruct, il, binaryStruct, nval, typeSize, buffer, offset, true);

            il.MarkLabel(exitLabel);
        }